Windows SDK筆記(六):使用對話方塊資源建立視窗

來源:互聯網
上載者:User
一、概述
在Charles Petzold的書中,介紹了一種直接利用對話方塊資源建立主視窗的方法。
使用這種方法,可以方便的在主視窗中安排子控制項,而代碼的其他部分跟用普通視窗時一樣。

我們知道,對話方塊是系統預先定義的“視窗類別”,它有自己的視窗處理函數,我們自己寫的對話方塊訊息處理函數並不是真正的視窗訊息處理函數。
但我們可以在對話方塊模板指令碼中,指定這個對話方塊使用我們自己定義的視窗類別,而不是系統的對話方塊類,這樣,就將對話方塊的訊息處理函數“嫁接”成我們自己定義的訊息處理函數了。

二、書寫一個“真正的”視窗訊息處理函數
按照普通視窗的方式書寫好訊息處理函數。
(不要漏掉了DefWindowProc)

三、註冊視窗類別
用書寫的訊息處理函數註冊一個視窗類別。

四、建立對話方塊資源,指定視窗類別為自定的視窗類別。
手工書寫一個對話方塊資源,存為單獨檔案,然後包含到資源檔中去。
(使用菜單View->Resource Includes彈出對話方塊,將檔案名稱填入到Compile-time derective一欄,這將在rc檔案中添加一行:"#include ""Some.dlg"" ")
例:
建立檔案Some.dlg
書寫:

HexCalc DIALOG -1, -1, 102, 122STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOXCLASS "HexCalc"    //填寫上自己註冊的類名稱CAPTION "Hex Calculator"{PUSHBUTTON "D",       68,  8,  24, 14, 14PUSHBUTTON "A",       65,  8,  40, 14, 14//各種控制項}

五、使用非強制回應對話方塊方式建立主視窗
建立主視窗的時候,使用CreateDialog。

 hwnd = CreateDialog (hInstance,szAppName,//對話方塊模板0,NULL) ;ShowWindow (hwnd, iCmdShow) ;

其他各部分,都與普通視窗時相同(註冊視窗類別、訊息迴圈等)。

Ⅱ.在對話方塊中建立自訂子視窗

可以自己定義控制項,然後在對話方塊模板中使用

一、定義"視窗類別"與訊息處理函數
在WinMain中
除了註冊主視窗類外,
另外註冊用於對話方塊的類,指明類對應的訊息處理函數

wndclass.style         = CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc   = SomeWndProc ;  //對應的訊息處理函數wndclass.cbClsExtra    = 0 ;wndclass.cbWndExtra    = 0 ;wndclass.hInstance     = hInstance ;wndclass.hIcon         = NULL ;wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1) ;wndclass.lpszMenuName  = NULL ;wndclass.lpszClassName = TEXT ("SomeControl") ;ReGISterClass (&wndclass) ;

同時,還要書寫好訊息處理函數SomeWndProc。

二、在對話方塊模板中添加自訂控制項視窗
在對話方塊模板上放上"Custom Control",然後設定屬性,並填寫自己定義的類名稱SomeControl。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.