視頻教程:模態與非模態對話框1
模態對話框:子窗口關閉之前,不能對父窗口操作
非模態對話框:子窗口關閉之前,可以對父窗口操作
插入一個對話框:
資源視圖--->右擊--->
進行類的綁定:(給添加的對話框定義類名:創建了一個類)
右擊對話框--->添加類--->
多出了一個頭文件--->
創建模態對話框:
在工程cpp中添加剛才的頭文件 #include "Cmydialog.h"
在需要彈出對話框的按鈕中寫:
Cmydialog dlg;//創建一個對話框對象
dlg.DoModal();//彈出模態對話框,並等待用戶的操作
創建非模態對話框:
Cmydialog dlg;//創建一個對話框對象
dlg.Create(IDD_DIALOG1, this);//創建一個非模態對話框,但不顯示
//參數1 子窗口的ID
//參數2 父窗口句柄,可以為NULL
dlg.ShowWindow(SW_SHOW);//顯示窗口,並繼續往下執行,不會等待用戶的操作
上面顯示的非模態對話框會一閃而過,原因dlg的作用域只在按鈕范圍內
解決的辦法:方法1.把對象申請為全局變量
方法2.指針法(new)
Cmydialog *p=new Cmydialog();
p->Create(IDD_DIALOG1, this);//創建一個非模態對話框,但不顯示
//參數1 子窗口的ID
//參數2 父窗口句柄,可以為NULL
p->ShowWindow(SW_SHOW);//顯示窗口,並繼續往下執行,不會等待用戶的操作