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

一、概述

Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。

程序中只要按一定的格式填写系统留给客户的那一小部分。

所需要完成的有:

窗口类的定义、窗口的建立、消息函数的书写、消息循环。

二、消息处理函数

Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。没个窗口都有一个消息处理函数。

在消息处理函数中,对传入的消息进行处理。系统内还有它自己的缺省消息处理函数。

客户写一个消息处理函数,在窗口建立前,将消息处理函数与窗口关联。这样,每当有消息产生时,就会去调用这个消息处理函数。

通常情况下,客户都不会处理全部的消息,而是只处理自己感兴趣的消息,其他的,则送回到系统的缺省消息处理函数中去。

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case ...
...
case ...
...
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
三、窗口的建立

客户需要自己建立窗口,建立后会得到系统返回的窗口句柄(HWND),后继的针对窗口的操作都针对句柄进行。

1.注册窗口类

建立窗口前,需要制定好这个窗口的相关属性,最主要的就是将自己定义的消息处理函数与窗口关联,其他的属性还包括:菜单、图标等等。

这个属性指定步骤是通过指定"窗口类"来完成的。

对于自己建立的窗口,这个"窗口类"需要自己制定,也即自己填充一个WNDCLASS结构,然后向系统注册。

对于一些特殊窗口,如按钮等控件,他们的行为是系统制定好了的,所以不需要自己注册,直接使用对应的“窗口类”名称就行了。

2.建立窗口

建立窗口时,注册的"窗口类"名称作为参数传入。

这样,当有针对该窗口的消息时,将调用“窗口类”中指定的消息处理函数,在其中得到处理。 

时间: 2024-12-29 14:28:38

Windows SDK笔记(一):程序基本结构的相关文章

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

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

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

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

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笔记(六):使用对话框资源建立窗口

Ⅰ.使用对话框资源建立主窗口 一.概述 在Charles Petzold的书中,介绍了一种直接利用对话框资源建立主窗口的方法. 使用这种方法,可以方便的在主窗口中安排子控件,而代码的其他部分跟用普通窗口时一样. 我们知道,对话框是系统预先定义的"窗口类",它有自己的窗口处理函数,我们自己写的对话框消息处理函数并不是真正的窗口消息处理函数. 但我们可以在对话框模板脚本中,指定这个对话框使用我们自己定义的窗口类,而不是系统的对话框类,这样,就将对话框的消息处理函数"嫁接"

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

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

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

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

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

Kinect for Windows SDK开发入门(十五)进阶指引 下

上一篇文章介绍了Kinect for Windows SDK进阶开发需要了解的一些内容,包括影像处理Coding4Fun Kinect工具类库以及如何建立自己的扩展方法类库来方便开发,接下来介绍了利用Kinect进行近距离探测的一些方法,限于篇幅原因,仅仅介绍了近距离探测的三种方式.  本文接上文将继续介绍近距离探测中如何探测运动,如何获取并保存产生的影像数据:然后将会介绍如何进行脸部识别,以及介绍全息图(Holograme)的一些知识,最后介绍了一些值得关注的类库和项目. 2.4 运动识别 目