MFC之對話方塊建立與銷毀總結

2021-08-03 09:52:36 字數 1958 閱讀 9210

主void cmoshiwindowdlg::onbutton1() 

子:1.標頭檔案宣告變數

2.void cdialogproty::onbutton1() 

1.顯示模式對話方塊:

cdialogdemo dlg;

dlg.domodal();

2.顯示非模式對話方塊:

cdialogdemo *dlg=new cdialogdemo(this); 

dlg->create(idd_general_control); 

dlg->showwindow(sw_show);

二、關閉對話方塊:

1.cdialog::onok();   //確定按鈕按下         cdialog::oncancel(); //取消按鈕被按下

2.cdialog::destorywindow();  

3.cdialog::enddialog(0);  

注:cdialog::closewindow();     僅僅是最小化對話方塊

postmessage(wm_close)

closewindow 

函式功能:該函式最小化指定的視窗,但並不銷毀該視窗。

函式原型:bool closewindow(hwnd hwnd);

引數:hwnd:將要最小化的視窗的控制代碼。

返回值:如果函式成功,返回值為非零;如果函式失敗,返回值為零。若想獲得更多錯誤資訊,請呼叫getlasterror函式。

備註:視窗尺寸被最小化成乙個圖示,並移動到螢幕的圖示區域。系統顯示視窗的圖示而不顯示視窗,並在圖示下顯示視窗標題。應用程式必須使用destroywindow函式銷毀視窗。

destroywindow  

函式功能:銷毀指定的視窗。這個函式通過傳送wm_destroy 訊息和 wm_ncdestroy 訊息使視窗無效並移除其鍵盤焦點。這個函式還銷毀視窗的選單,清空執行緒的訊息佇列,銷毀與視窗過程相關的定時器,解除視窗對剪貼簿的擁有權,打斷剪貼簿器的檢視鏈。

函式原型:bool destroywindow( hwnd hwnd // handle to window to destroy);

hwnd :將被銷毀的視窗的控制代碼。

返回值:如果函式成功,返回值為非零:如果函式失敗,返回值為零。若想獲得更多錯誤資訊,請呼叫getlasterror函式。

備註:乙個執行緒不能使用本函式銷毀別的執行緒建立的視窗。如果這個視窗是乙個不具有ws_ex_noparentnotify 樣式的子視窗,則銷毀視窗時將發wm_parentnotify 訊息給其父視窗。

windows ce: 本函式將不傳送 wm_ncdestroy 訊息.

enddialog  

函式功能:該函式清除乙個模態對話方塊,並使系統中止對對話方塊的任何處理。

函式原型:bool enddialog(hwnd hdlg,int nresult);

引數:hdlg:表示要被清除的對話方塊視窗。

nresult:指定從建立對話方塊函式返回到應用程式的值。

返回值:如果函式呼叫成功,則返回值為非零值;如果函式呼叫失敗則返回值為零。若想獲得錯誤資訊請呼叫getlasterror函式。

備註:由dialogbox,dialogboxparam、dialogboxlndirect和dialogboxlndirectparam函式 建立的對話方塊一定要用enddialog函式來清除。應用程式從對話方塊應用程式內部呼叫enddialog函式,該函式不能為其他目的而供使用。對話方塊應 用程式可以在任何時間呼叫enddialog函式;甚至在wm_initdialog訊息處理過程中。如果應用程式在wm_intdialog訊息處理過 程中呼叫該函式,則對話方塊在顯示和輸入焦點被設定之前對話方塊被清除。enddialog函式並不立即清除對話方塊。而是設定乙個標誌,並且允許對話方塊應用程 序把控制權返回系統。系統在試圖從應用程式佇列檢索下乙個訊息之前檢測標誌。如果已經設定了標誌則系統中止訊息迴圈,清除對話方塊,且用nresult中的 值作為從建立對話方塊的函式中返回的值。

文章出處:

MFC之對話方塊

對話方塊可以分為模式對話方塊和非模式對話方塊兩種。模式對話方塊是指使用者只能在當前的窗體中進行操作,在該窗體沒有關閉之前不能切換到其他的窗體。非模式對話方塊是指當前的所操作的窗體可以切換。一般情況下,用於確認資訊的操作和一般的操作的對話方塊屬於模式對話方塊。如開啟檔案對話方塊就是典型的模式對話方塊,...

mfc建立隱藏對話方塊

通常有需求mfc主對話方塊建立乙個子對話方塊 彈出式的對話方塊 但是彈出對話方塊必須要隱藏起來,等需要顯示的時候才顯示。嘗試過在建立彈出對話方塊後呼叫showwindow sw hide 函式實現,但是介面始終會閃爍一下。網上找到的許多資料都說在子對話方塊的oninitdialog 函式中新增sho...

MFC 建立模式對話方塊與非模式對話方塊

模式對話方塊 my about cb cb.domodal 非模式對話方塊 my about cb new my about cb create idd myabout,this cb showwindow sw show vc2008 mfc 預設新增到對話方塊會有 確定跟取消,但這倆框在資源檢視...