Windows SDK笔记(六):使用对话框资源建立窗口
2007-09-29 14:55
393 查看
一、概述
在Charles Petzold的书中,介绍了一种直接利用对话框资源建立主窗口的方法。
使用这种方法,可以方便的在主窗口中安排子控件,而代码的其他部分跟用普通窗口时一样。
我们知道,对话框是系统预先定义的“窗口类”,它有自己的窗口处理函数,我们自己写的对话框消息处理函数并不是真正的窗口消息处理函数。
但我们可以在对话框模板脚本中,指定这个对话框使用我们自己定义的窗口类,而不是系统的对话框类,这样,就将对话框的消息处理函数“嫁接”成我们自己定义的消息处理函数了。
![](http://image.21tx.com/image/20040220/10508.gif)
二、书写一个“真正的”窗口消息处理函数
按照普通窗口的方式书写好消息处理函数。
(不要漏掉了DefWindowProc)
![](http://image.21tx.com/image/20040220/10508.gif)
三、注册窗口类
用书写的消息处理函数注册一个窗口类。
![](http://image.21tx.com/image/20040220/10508.gif)
四、建立对话框资源,指定窗口类为自定的窗口类。
手工书写一个对话框资源,存为单独文件,然后包含到资源文件中去。
(使用菜单View->Resource Includes弹出对话框,将文件名填入到Compile-time derective一栏,这将在rc文件中添加一行:"#include ""Some.dlg"" ")
例:
建立文件Some.dlg
书写:
![](http://image.21tx.com/image/20040220/10508.gif)
五、使用非模式对话框方式建立主窗口
建立主窗口的时候,使用CreateDialog。
其他各部分,都与普通窗口时相同(注册窗口类、消息循环等)。
Ⅱ.在对话框中建立自定义子窗口
可以自己定义控件,然后在对话框模板中使用
![](http://image.21tx.com/image/20040220/10508.gif)
一、定义"窗口类"与消息处理函数
在WinMain中
除了注册主窗口类外,
另外注册用于对话框的类,指明类对应的消息处理函数
同时,还要书写好消息处理函数SomeWndProc。
![](http://image.21tx.com/image/20040220/10508.gif)
二、在对话框模板中添加自定义控件窗口
在对话框模板上放上"Custom Control",然后设置属性,并填写自己定义的类名称SomeControl。
在Charles Petzold的书中,介绍了一种直接利用对话框资源建立主窗口的方法。
使用这种方法,可以方便的在主窗口中安排子控件,而代码的其他部分跟用普通窗口时一样。
我们知道,对话框是系统预先定义的“窗口类”,它有自己的窗口处理函数,我们自己写的对话框消息处理函数并不是真正的窗口消息处理函数。
但我们可以在对话框模板脚本中,指定这个对话框使用我们自己定义的窗口类,而不是系统的对话框类,这样,就将对话框的消息处理函数“嫁接”成我们自己定义的消息处理函数了。
![](http://image.21tx.com/image/20040220/10508.gif)
二、书写一个“真正的”窗口消息处理函数
按照普通窗口的方式书写好消息处理函数。
(不要漏掉了DefWindowProc)
![](http://image.21tx.com/image/20040220/10508.gif)
三、注册窗口类
用书写的消息处理函数注册一个窗口类。
![](http://image.21tx.com/image/20040220/10508.gif)
四、建立对话框资源,指定窗口类为自定的窗口类。
手工书写一个对话框资源,存为单独文件,然后包含到资源文件中去。
(使用菜单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 //各种控件 }
![](http://image.21tx.com/image/20040220/10508.gif)
五、使用非模式对话框方式建立主窗口
建立主窗口的时候,使用CreateDialog。
hwnd = CreateDialog ( hInstance, szAppName, //对话框模板 0, NULL) ; ShowWindow (hwnd, iCmdShow) ;
其他各部分,都与普通窗口时相同(注册窗口类、消息循环等)。
Ⅱ.在对话框中建立自定义子窗口
可以自己定义控件,然后在对话框模板中使用
![](http://image.21tx.com/image/20040220/10508.gif)
一、定义"窗口类"与消息处理函数
在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。
![](http://image.21tx.com/image/20040220/10508.gif)
二、在对话框模板中添加自定义控件窗口
在对话框模板上放上"Custom Control",然后设置属性,并填写自己定义的类名称SomeControl。
相关文章推荐
- Windows SDK笔记(六):使用对话框资源建立窗口
- Windows SDK笔记(六):使用对话框资源建立窗口
- 《Windows API》使用对话框资源创建窗口
- C++windows内核编程笔记day09_day10,对话框和窗口基本控件等的使用
- windows sdk程序模板(用已有的对话框资源创建主窗口)
- Windows SDK笔记(二):在窗口上建立控件
- Win32汇编--使用资源--对话框--在对话框中使用子窗口控件(2)
- 使用VS2005建立安装程序--内置复选框对话框
- 不使用资源文件动态创建对话框的做法
- qt中添加资源文件以及添加菜单图标、工具栏中菜单的快捷方式、窗口以及对话框的icon
- C#学习笔记(十六):使用打开保存文件对话框
- 《MFC游戏开发》笔记二 建立工程、调整窗口
- Item 13:使用对象(智能指针)来管理资源 Effective C++笔记
- Java6学习笔记22——在Swing中不使用Layout管理器直接描绘窗口
- Qt5开发学习总结(四)——资源文件的使用与主窗口QMainWindow实现登录框
- windows下32位汇编语言学习笔记 第四章 第一个窗口程序 1 (消息的使用和入口代码)
- ASP.NET中使用IFRAME建立类Modal窗口
- Windows SDK笔记(七):创建MDI窗口
- 【net命令建立连接】不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接
- mongo使用笔记:查询及建立索引