標籤:style blog http color io strong ar 檔案 2014
關於對話方塊
1 對話方塊種類
對話方塊也是一種資源,Windows中對話方塊分為模態的和非模態的,以及Windows系統中已經定義好的那些通用對話方塊,比方開啟檔案,目錄,調色盤,字串尋找等。
2 模態對話方塊和非模態對話方塊的差別
模態對話方塊就是那種你開啟後必須關了才幹轉到主表單的那種類型;非模態對話方塊就是即便開啟了對話方塊,你依舊能夠在主表單中指指點點的那種類型。
3 模態對話方塊的建立及彈出
<1>
INT_PTRDialogBox( HINSTANCEhInstance, // handle to module LPCTSTR lpTemplate, //dialog box template HWND hWndParent, //handle to owner window DLGPROC lpDialogFunc // dialog box procedure);
<2>
INT_PTR DialogBoxIndirect( HINSTANCEhInstance, // handle to module LPCDLGTEMPLATE lpTemplate,// dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc // dialog box procedure);
<3>
INT_PTR DialogBoxIndirectParam( HINSTANCE hInstance,// handle to module LPCDLGTEMPLATE hDialogTemplate, // dialog box template HWNDhWndParent, // handle toowner window DLGPROC lpDialogFunc, // dialog box procedure LPARAM dwInitParam //initialization value);
<4>
INT_PTR DialogBoxParam( HINSTANCEhInstance, // handle to module LPCTSTR lpTemplateName, // dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc, //dialog box procedure LPARAM dwInitParam // initialization value);
當中DialogBox和DialogBoxParam是從資源中載入對話方塊,其餘兩個是從記憶體中載入對話方塊。在這裡面要注意的一個參數就是DLGPROC lpDialogFunc,函數原型是:
INT_PTRCALLBACKDialogProc( HWNDhwndDlg,// handle to dialog boxUINT uMsg,//message WPARAMwParam,// first message parameterLPARAM lParam //second message parameter);
這個回呼函數跟表單回呼函數非常類似,可是函數的傳回型別不一樣。
4 模態對話方塊的訊息處理
DialogProc非常像WindowProc,但它不是WindowProc,對話方塊的WindowProc在Windows內部定義,它會調用DialogProc函數。
BOOL CALLBACKDlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam){ switch(msg) { caseWM_INITDIALOG: returnTRUE; caseWM_COMMAND: switch(LOWORD(wParam)) { caseIDOK: EndDialog(hdlg,0); break; } break; } returnFALSE;}
WM_INITDIALOG訊息會在對話方塊建立的時候發送,在此訊息下能夠用來初始化對話方塊中的各種控制項。
5 模態對話方塊的關閉
BOOLEndDialog( HWNDhDlg,INT_PTR nResult);
指定建立對話方塊的函數的返回值。
6 利用控制項建立複雜對話方塊
7 模態對話方塊中自己定義控制項
既然是自己定義控制項,那麼必須在要進行表單的設計,表單的注冊,以及配置響應的表單過程函數。
製作步驟:
<1>在工具箱中找到custom control,將其拖拽到面板中
<2>點擊屬性,指定起class名稱,以及ID
<3>在WinMain函數中進行設計注冊
<4>指定其表單過程函數
Windows 編程之 對話方塊總結