Windows SDK笔记(六):使用对话框资源建立窗口

Ⅰ.使用对话框资源建立主窗口

一、概述

在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
//各种控件
}

时间: 2024-11-03 03:36:59

Windows SDK笔记(六):使用对话框资源建立窗口的相关文章

Windows SDK笔记(经典--一定要看)

Windows SDK笔记(一):Windows程序基本结构 一.概述 Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成.程序中只要按一定的格式填写系统留给客户的那一小部分.所需要完成的有:窗口类的定义.窗口的建立.消息函数的书写.消息循环.   二.消息处理函数 Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的.没个窗口都有一个消息处理函数.在消息处理函数中,对传入的消息进行处理.系统内还有它自己的缺省消息处理函数. 客

Windows SDK笔记(一):程序基本结构

一.概述 Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成. 程序中只要按一定的格式填写系统留给客户的那一小部分. 所需要完成的有: 窗口类的定义.窗口的建立.消息函数的书写.消息循环. 二.消息处理函数 Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的.没个窗口都有一个消息处理函数. 在消息处理函数中,对传入的消息进行处理.系统内还有它自己的缺省消息处理函数. 客户写一个消息处理函数,在窗口建立前,将消息处理函数与窗口关

Windows SDK笔记(四):模式对话框

一.概述 对话框是一种特殊的窗口,它依据对话框模板资源而建立. 它与一般的窗口有些不同,很多过程由系统完成了,虽然用户还是要提供一个消息处理函数,但在此消息处理函数中,不需要将不关心的消息交由缺省消息处理函数. 实际上,调用缺省处理的过程又系统完成. 二.对话框消息处理函数 对话框也需要用户提供一个消息处理函数,但这个处理函数没有普通窗口的消息处理函数"权利大". 对话框是一种系统定义的"窗口类",它已经定义好了对应的消息处理函数.客户所作的消息处理函数,并不是直接

Windows SDK笔记(五):非模式对话框

一.概述 使用DialgBox建立的对话框是"模式对话框",只有关闭对话框后,程序的其他窗口才能进行操作. 与此相对应,存在"非模式对话框",对话框建立后,并不强制要求用户立即反应,而是与其他窗口同时接受用户操作. 二.建立 非模式对话框使用CreateDialg建立. 可以在WinMain中建立主窗口后建立,对话框句柄保存备用. hDlgModeless = CreateDialog ( hInstance, TEXT ("ColorScrDlg&quo

Windows SDK笔记(二):在窗口上建立控件

一.概述 控件是子窗口,它们是系统已经定义好的窗口类,因此不需要注册. 也不需要写消息处理函数. 在主窗口得到WM_CREATE消息时,建立子窗口即可. 二.实例 //参数:窗口句柄,消息,消息参数,消息参数 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { //处理感兴趣的消息 switch (message) { case WM_CREATE: CreateWindow(TEXT

Windows SDK笔记(七):创建MDI窗口

一.概述 MDI窗口包含一个框架窗口和若干子窗口. 实际上,框架窗口本身是一个普通主窗口,不过它的客户去被一个特殊窗口覆盖. 这个特殊窗口是系统预定义的"窗口类",类名称为:"MDICLIENT".它负责各个MDI子窗口的管理. 二.窗口建立 1.注册一个MDI框架窗口类,提供MDI框架窗口消息处理函数 MDI框架窗口消息处理函数中,将未处理消息交由DefFrameProc处理 //MDI框架窗口消息处理函数 LRESULT CALLBACK MDIFrameWnd

Windows SDK笔记(三):定制控件消息处理函数

一.概述 控件的消息处理函数是由系统定义好了的,通常情况下,不需要自己提供. 但当需要对控件进行特殊控制时,可以提供一个消息处理函数,替换原来的消息处理函数. 自己的处理完成后,再调用控件的缺省消息处理. 二.相关函数 1.窗口类的属性可以通过GetWindowLong和SetWindowLong进行读取和设置 LONG GetWindowLong( HWND hWnd, // handle to window int nIndex // offset of value to retrieve

Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法

详细说明:Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法.该方法可以在运行时在内存中直接建立对话框资源,使用起来更为灵活.适用于多个开发项目共享有界面的公用程序模块的情况,也适用于编写需要显示大量对话框或对话框风格随着用户输入不断变化的应用程序.   下载地址1:http://files.cnblogs.com/lidabo/CDynamicDialogWithoutTemplate.rar 下载地址2:http://www.pudn.com/downloa

Kinect for Windows SDK 1.8的改进及新特性

今年3月, 微软推出了Kinect for Windows SDK 1.7 更新,包括了手势识别 Kinect Interactions 和实时 3D 建模 Kinect Fusion 两项新技术. 昨天,微软发布了Kinect for Windows SDK的1.8版本,新版本SDK进行了少量更新,但对Kinect Developer Toolkit中的示例进行了大量更新,包括新添加了对HTML5的支持,新的背景移除功能.Kinect Fusion 的色彩捕捉功能. Kinect Fusion