程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> Windows SDK筆記(六):使用對話框資源建立窗口

Windows SDK筆記(六):使用對話框資源建立窗口

編輯:關於VC++

Ⅰ.使用對話框資源建立主窗口

一、概述

在Charles Petzold的書中,介紹了一種直接利用對話框資源建立主窗口的方法。

使用這種方法,可以方便的在主窗口中安排子控件,而代碼的其他部分跟用普通窗口時一樣。

我們知道,對話框是系統預先定義的“窗口類”,它有自己的窗口處理函數,我們自己寫的對話框消息處理函數並不是真正的窗口消息處理函數。

但我們可以在對話框模板腳本中,指定這個對話框使用我們自己定義的窗口類,而不是系統的對話框類,這樣,就將對話框的消息處理函數“嫁接”成我們自己定義的消息處理函數了。

二、書寫一個“真正的”窗口消息處理函數

按照普通窗口的方式書寫好消息處理函數。

(不要漏掉了DefWindowProc)

三、注冊窗口類

用書寫的消息處理函數注冊一個窗口類。

四、建立對話框資源,指定窗口類為自定的窗口類。

手工書寫一個對話框資源,存為單獨文件,然後包含到資源文件中去。

(使用菜單View->Resource Includes彈出對話框,將文件名填入到Compile-time derective一欄,這將在rc文件中添加一行:"#include ""Some.dlg"" ")

例:

建立文件Some.dlg

書寫:

HexCalc DIALOG -1, -1, 102, 122
STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CLASS "HexCalc"  //填寫上自己注冊的類名稱
CAPTION "Hex Calculator"
{
PUSHBUTTON "D",    68, 8, 24, 14, 14
PUSHBUTTON "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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved