Windows程式設計之非模態對話方塊

2021-06-21 20:53:30 字數 2744 閱讀 4857

//  注:  最近真不是喜歡上windows程式設計了..  專案需要啊

設定程式圖示:

1  建立非模態對話方塊

<1>  hwndcreatedialog(  hinstance hinstance,  // handle to module

lpctstrlptemplate,    // dialog box template name

hwndhwndparent,    // handle to owner window

dlgproclpdialogfunc  // dialog box procedure);

<2> hwnd createdialogindirect(  hinstance hinstance,        // handle to module

lpcdlgtemplate lptemplate,   //dialog box template

hwnd hwndparent,           // handle to owner window

dlgproc lpdialogfunc         //dialog box procedure);

<3> hwnd createdialogindirectparam(  hinstance hinstance,   // handle to module

lpcdlgtemplate lptemplate,  // dialog box template

hwnd hwndparent,          // handle to owner window

dlgproc lpdialogfunc,       // dialog box procedure

lparam lparaminit           // initialization value);

<4> hwnd createdialogparam(  hinstance hinstance,     // handle to module

lpctstr lptemplatename,    //dialog box template

hwnd hwndparent,         // handle to owner window

dlgproc lpdialogfunc,      //dialog box procedure

lparam dwinitparam        //initialization value);

引數跟非模態對話方塊一致。createdialogparam會呼叫createwindowexe去建立乙個視窗,所以這樣的對話方塊其實就是視窗。當然單獨乙個對話方塊可以沒有父視窗直接單獨存在。

2  含有父視窗的對話方塊程式

3 自定義視窗類(無父視窗)的對話方塊程式

<1>在指令碼中指定對話方塊的型別以及各種控制項假定指令碼名稱為new.dlg

<2>然後在rc檔案中新增指令碼

<3>在winmain函式註冊視窗類

注意這裡的createdialog的最後乙個引數dlgproc為null,因為在視窗類中指定了視窗過程函式。

[cpp]view plain

copy

intwinapi winmain (

hinstance

hinstance, hinstancehprevinstance,

pstr

szcmdline, inticmdshow)       

showwindow (hwnd, icmdshow) ;  

updatewindow (hwnd) ;  

while

(getmessage (&msg, null, 0, 0))         

returnmsg.wparam ;        

}   生成的視窗程式程式如圖所示:

12 從資源載入(無父視窗)的對話方塊程式

[cpp]view plain

copy

lresult

callbackwndproc(

hwnd

,uint

,wparam

,lparam

) ;  

intwinapi winmain (

hinstance

hinstance, hinstancehprevinstance,

pstr

szcmdline, inticmdshow)       

returnmsg.wparam ;        

}   可以看到這裡沒有視窗的設計,視窗的註冊,因為這種從資源載入的對話方塊的視窗類是已經定義的,就像那種pushbutton一樣,都是定義好的視窗的類,因而不需要註冊。

生成的單獨對話方塊程式如下圖所示:

模態與非模態對話方塊

vc 模態對話方塊建立 domodal 模式對話方塊關閉順序 1.onclose 訊息響應函式,響應wm close訊息,當 關閉 按鈕被單擊的時候,該函式被呼叫 2.onkillfocus 訊息響應函式,響應wm killfocus訊息,當乙個視窗即將失去鍵盤輸入焦點以前被傳送 3.ondestr...

模態與非模態對話方塊

模態對話方塊就是在沒有關閉它之前,不能與同乙個應用程式的其他視窗進行互動。非模態對話方塊就是既可以與它互動也可以與同乙個應用程式的其他視窗進行互動。下面看 qt快速入門第三版 裡專案03 3 3的例子 ifndef mywidget h define mywidget h include names...

模態與非模態對話方塊

功能上區別 模態對話方塊執行時,關閉本對話方塊之前,使用者無法對本程式的其他部分進行操作。而非模態對話方塊開啟同時還可以切換到其他視窗進行操作。程式設計實現區別 模態對話方塊使用cdialog domodal函式來建立,domodal會啟動乙個模態對話方塊自己的訊息迴圈,這也是模態對話方塊要關閉後才...