Windows SDK笔记(六):使用对话框资源建立窗口
2010年06月13日
Windows SDK笔记(六):使用对话框资源建立窗口
作者:[ft=#00ffcc,,
Ⅰ.使用对话框资源建立主窗口
一、概述
在Charles Petzold的书中,介绍了一种直接利用对话框资源建立主窗口的方法。
使用这种方法,可以方便的在主窗口中安排子控件,而代码的其他部分跟用普通窗口时一样。
我们知道,对话框是系统预先定义的“窗口类”,它有自己的窗口处理函数,我们自己写的对话框消息处理函数并不是真正的窗口消息处理函数。
但我们可以在对话框模板脚本中,指定这个对话框使用我们自己定义的窗口类,而不是系统的对话框类,这样,就将对话框的消息处理函数“嫁接”成我们自己定义的消息处理函数了。
二、书写一个“真正的”窗口消息处理函数
按照普通窗口的方式书写好消息处理函数。
(不要漏掉了DefWindowProc)
[/b][b]三、注册窗口类
用书写的消息处理函数注册一个窗口类。
[/b][b]四、建立对话框资源,指定窗口类为自定的窗口类。
手工书写一个对话框资源,存为单独文件,然后包含到资源文件中去。
(使用菜单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) ;
其他各部分,都与普通窗口时相同(注册窗口类、消息循环等)。
Ⅱ.在对话框中建立自定义子窗口
可以自己定义控件,然后在对话框模板中使用
[/b][b]一、定义"窗口类"与消息处理函数
在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。
发表评论
-
Windows Mobile开发学习--(2)新手上路 “Hello Mobile!”
2012-01-20 01:55 788Windows Mobile开发学习--(2) ... -
搭建Android2.3开发环境
2012-01-20 01:55 1571搭建Android2.3开发环境 2 ... -
Visual Studio 2008 SP1 补丁安装时发生严重错误-安装失败-解决方法整合版!-分享
2012-01-20 01:55 2499Visual Studio 2008 SP1 补丁 ... -
【Android浏览器插件开发准备工作之NPAPI】使用Visual Studio 2008 运行Firefox浏览器插件实例npruntime
2012-01-20 01:55 1327【Android浏览器插件开发准备工作之NPAPI】使用Vis ... -
将 Flex 3 的应用程序迁移到 Flex 4 ―第 1 部分:将 Flex 3 Dashboard 应用程序导入 Flash Builder 4
2012-01-20 01:55 813将 Flex 3 的应用程序迁移到 Flex 4 ―第 1 部 ... -
一些小短片,抄来的
2012-01-19 09:41 828一些小短片,抄来的 2011年12月18日 久很久以前, ... -
美拉说话
2012-01-19 09:41 619美拉说话 2011年12月23日 ... -
Just Kidding
2012-01-19 09:41 551Just Kidding 2012年01月17日 闺蜜说 ... -
曾经的糊涂事
2012-01-19 09:41 554曾经的糊涂事 2012年01 ... -
当老师就当一名快乐的老师
2012-01-19 09:41 879当老师就当一名快乐的老师 2011年12月15日 ... -
Windows下NDK开发环境的搭建(Cygwin+Android-SDK+NDK)
2012-01-17 02:16 523Windows下NDK开发环境的搭 ... -
好久没写windows的SDK代码了无聊的时钟程序
2012-01-17 02:16 874好久没写windows的SDK代码了无聊的时钟程序 2011 ... -
Kinect for Windows SDK,微软的下一个金矿?
2012-01-17 02:16 695Kinect for Windows SDK,微软的下一个金矿 ... -
SDK 问题
2012-01-17 02:16 927SDK 问题 4小时前 问题:点击AVD Manager ... -
Socket通信的网络仿真
2012-01-15 21:54 1329Socket通信的网络仿真 2011年06月25日 这学 ... -
socket编程的注意事项
2012-01-15 21:54 1055socket编程的注意事项 2010年03月23日 so ... -
总结java socket编程
2012-01-15 21:53 569总结java socket编程 2011 ... -
Socket之编程巩固篇
2012-01-15 21:53 721Socket之编程巩固篇 2010 ... -
socket编程
2012-01-15 21:53 550socket编程 2009年10月21日 在OSI的 ...
相关推荐
Windows SDK笔记:窗口类的定义、窗口的建立、消息函数的书写、消息循环。
SDK15 蓝牙5.0笔记22:(蓝牙数据传输篇)蓝牙串口通信详解(改) SDK15 蓝牙5.0笔记23:(蓝牙数据传输篇)蓝牙遥控器 SDK15 蓝牙5.0笔记24:(蓝牙数据传输篇)蓝牙FLASH存储之fstorage SDK15 蓝牙5.0笔记25:...
Windows SDK笔记(一):Windows程序基本结构
VC下使用SDK 的 skinmagic换肤对话框例子程序
Windows SDK编程之简单对话框
SDK下,我们通常用DialogBox来创建模态对话框。DialogBox并不是一个Win32的API,它实际上是一个宏,调用DialogBoxParam来创建对话框。
SDK:对话框,光标,字符串,位图,应用图标,语言
Windows SDKWindows SDKWindows SDKWindows SDKWindows SDKWindows SDKWindows SDKWindows SDKWindows SDKWindows SDKWindows SDKWindows SDKWindows SDK
(蓝牙工程搭建篇)蓝牙工程样本详细讲解 SDK15 蓝牙5.0笔记8:(蓝牙工程搭建篇)蓝牙RTT输出log信息 SDK15 蓝牙5.0笔记9:(蓝牙工程搭建篇)蓝牙协议栈下软件定时器的使用 SDK15 蓝牙5.0笔记10:(蓝牙工程搭建篇...
怎样调用Windows的文件拷贝对话框
Microsoft Windows SDK 7.1下载(32位资源)
Windows Media Player SDK学习笔记
本pdf是根据小甲鱼《WindowsSDK编程》视频教程做的笔记,很详细,大家可以下载使用,节省大家做笔记时间!
Microsoft Windows SDK 8.1适用于windows 8.1以及Windows 7、Windows Vista、Windows Server 2012、Windows Server 2008 R2操作系统,这是由微软开发的软件开发工具包,可以轻松帮助程序创建在windows平台上的应用,...
安装sql 2012时需要microsoft windows SDK8.1,点击installs中的dotNetFx45_Full_x86_x64.exe即可
android 4.1 最新SDK Windows版: http://s1.eoeandroid.com/sdk/4.1/android-sdk_r20-windows.zip(推荐) http://s1.eoeandroid.com/sdk/4.1/installer_r20-windows.exe Mac版: ...
本插件是一个VC开发Win32SDK对话框程序用的向导插件,将DlgBaseAppWizard.pdb和DlgBaseAppWizard.awx拷贝到VC6的安装目录的Common\MSDev98\Template目录下即可,一般VC6都安装到了C盘,所以一般只要拷贝到C:\Program...
windows sdk8.1 对于Visual Studio 中出现的无法找到编译器DLL,请确保正确的路径,通过安装Windows SDK8.1离线安装包即可解决。 解决windows7安装vs2013后显示不能找到windowssdkdir,以致不能编译或者链接失败的...
Windows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDKWindows_SDK
引导说明写给前端新手的工程管理建议: : 开发IM的基本思路: : 消息... ://rongcloud.github.io/websdk-demo/api-test SDK原始码: : 常见问题: : 需要SDK: : 在Electron中需要SDK: : Electron中的普通SDK: :