文章目录
- 2.Windows程序和操作系统之间的关系
- 3.Windows窗口的生命周期如下:
- 3.3的原则。Windows窗体
1、Windows程序开发过程:
Windows程序分为“程序代码”和“UI资源”两部分,由RC编译器集成为一个完整的EXE文件。
UI资源指的是功能菜单、对话框外观、程序图标、光标形状等等。
这些UI资源的实际内容(二进制代码)是由各种工具生成的,并带有各种扩展,如。ico,。bmp,。cur等等。程序员必须在一个所谓的资源描述文件中描述它们。rc)。
RC编译器(RC.EXE)读取RC文件的描述后,将所有UI资源文件做成一个. RES文件,然后与程序代码结合,就是一个完整的Windows可执行文件。
2.Windows程序和操作系统之间的关系
Windows程序由外部事件驱动。换句话说,程序保持等待(使用while循环),等待任何可能的输入,然后做出判断,然后进行适当的处理。上述“输入”被操作系统捕获,然后以消息(一种数据结构)的形式输入到程序中。
3.Windows窗口的生命周期如下:
1.CreateWindow在程序初始化的过程中被调用,为程序创建一个窗口作为程序的屏幕舞台。CreateWindow会在生成窗口后直接向窗口函数发送wM_CREATE,然后窗口函数可以做一些初始化操作(比如配置内存、打开文件、读取初始数据……)。
2在程序活着的过程中,不断用GetMessage从消息队列中抓取消息。如果这个消息是WM_oUIT,GetMessage将返回0,结束while循环,从而结束整个程序。
3.DispatchMessage在Windows用户模块的协助和监督下将消息分派给窗口功能。消息将在那里被判断和处理。
4.程序连续执行步骤2和步骤3的操作。
5.当用户按下系统菜单中的关闭命令项时,系统发送WM_CLOSE。通常程序的窗口函数不会拦截这个消息,所以由DefWindowProc来处理。
6.接收到WM_CLOSE后,DEF Window Proc调用DestroyWindow清除窗口。销毁窗口本身发送WM_DESTROY。
7.程序对WM_DESTROY的标准响应是调用PostQuitMessage。
8.PostQuitMessage没有别的事做,只是发送WM_QUIT消息,准备在消息循环中获取GetMessage,和步骤2一样,结束消息循环。
3.3的原则。Windows窗体
Windows的三大核心系统:负责窗口对象生成和消息分发的用户模块,负责图像显示和绘制的GDI模块,负责内存、进程和IO管理的内核模块。
想象一下如何在一个像素数组上生成一个窗口对象。其实就是用GDI来绘制窗口,并以一定的频率不断刷新显示在屏幕上。这就是图形界面,有在DOS或Windows DOS模拟器下写图形界面的经验更好理解。因此,实际上用户模块中的窗口生成依赖于GDI模块(包括菜单、滚动条等。,都是GDI画的)。
然后,我们从用户模块和GDI模块来说说Windows窗体原理。
如果您接触过Win32 SDK编程,您应该知道标准Windows窗体的生成过程:
设计窗口类、注册窗口类、创建窗口、显示窗口、启动消息循环泵循环获取消息分发到窗体过程函数处理。
粘贴标准Windows窗体的生成代码:
#include