Windows 編程之 對話方塊總結

來源:互聯網
上載者:User

標籤: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 編程之 對話方塊總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.