非模態對話方塊是當其開啟時,使用者可以在模態對話方塊內進行操作也可以在對應的客戶區進行操作。非模態對話方塊方便使用者對客戶區的操作。
工具/原料
Microsoft Visual Studio 2010
或者Microsoft Visual C++6.0
方法/步驟
新建一個基於對話方塊的應用程式,應用程式命名為Motai
在對話方塊內新增一個按鈕,按鈕的標題為新建非模態對話方塊,並對此按鈕新增響應函式OnButton1()。
通過Ctrl+C和Ctrl+V新建一個對話方塊,命名為非模態對話方塊,並對此對話方塊新增相對應的類,類名為CMyDialog。
對按鈕“新建非模態對話方塊”的響應函式OnButton1()新增一下程式碼:
void CMotaiDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CMyDialog* pDialog; //對話方塊類物件指標
pDialog = new CMyDialog();
//Check if new succeeded and we got a valid pointer to a dialog object
if(pDialog != NULL)
{
BOOL ret = pDialog->Create(IDD_MOTAI_DIALOG1,this); //建立非模態對話方塊
if(!ret) //建立失敗
AfxMessageBox("建立對話方塊失敗");
CRect clientRect,dlgRect;
GetClientRect(&clientRect); //獲取客戶區視窗大小
ClientToScreen(clientRect); //轉換為螢幕座標
pDialog->GetWindowRect(&dlgRect); //獲取對話方塊視窗大小
//移動對話方塊視窗
pDialog->MoveWindow(clientRect.left+30, clientRect.top+50,dlgRect.Width(),dlgRect.Height());
pDialog->ShowWindow(SW_SHOW); //顯示對話方塊
}
else
AfxMessageBox("建立對話方塊物件失敗");
}
程式執行使用者可以在模態對話方塊內進行操作也可以在對應的客戶區進行操作結果如下:
注意事項
使用CMyDialog時要在檔案的頭部加上對應的標頭檔案