一个完整的 windos 应用程序通常由下面五种类型的文件组成:
1. 扩展名为 .c/.cpp 的C语言程序源文件
2. 扩展名为 .h 的头文件
3. 扩展名为 .rc 的资源描述文件
4. 扩展名为 .def 的模块定义文件
5. 扩展名为 .mak 的项目文件
前面三种很常见了,不过后面两个就 ……
暂时不管,以后遇见了再说。
源程序组成结构
与 console 程序相对应, windows 应用程序也有一个入口函数 WinMain ,用于完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。此外,窗口函数 WndProc 是处理接收到的消息的函数。其中包含了应用程序对各种可能接收到的消息的处理过程。
WinMain 函数的功能:
注册窗口类,建立窗口及执行其他必要的初始化工作
进入消息循环,根据从应用程序消息队列接受的消息调用相应的处理过程。
当消息循环检测到 WM_QUIT 消息时终止程序运行。
WinMian 函数由三个基本组成部分:函数说明、初始化和消息循环。
(1) 函数说明
int WINAPI WinMain
(
HINSTANCE hThisInst, // 应用程序当前实例句柄
HINSTANCE hPrevInst, // 应用程序其它实例句柄
LPSTR lpszCmdLine, // 指向程序命令行参数的指针
Int nCmdShow // 应用程序开始执行时窗口显示方式的标识
)
应当注意到, windows 程序可能并行的进行多次执行,因而可能出现同一个应用程序的多个窗口同时存在的情况。在 windows 中,每执行一次称其为一个实例( instance ),并使用一个实例句柄进行唯一的标识。
(2) 初始化工作包括:窗口类的定义,注册,创建窗口实例和显示窗口四个部分。
窗口类的定义
在 windows 程序中,窗口类定义了窗口的形式与功能。窗口类定义通过给窗口类数据结构 WNDCLASS 赋值完成,该数据结构中包含窗口类的各种属性。常用函数有:
LoadIcon 在程序中加载一个窗口图标
LoadCursor 向程序加载一个窗口光标
GetStockObject 可以获取各种系统默认资源
注册窗口类
Windows 系统本身提供部分预定义的窗口类,程序员也可以自定义窗口类。窗口类必须先用函数 RegisterClass 进行注册后才能使用。
其形式为: BOOL RegisterClass( &wndClass )
创建窗口
窗口创建由函数 CreateWindow 实现,其原型为:
HWND CreateWinodw
(
LPCTSTR lpszClassName, // 窗口类名,此窗口名必须是已经注册过的
LPCTSTR lpszTitile, // 窗口标题
DWORD dwStyle, // 窗口样式
int x,
int y, // 窗口左上角坐标
int nWidth,
int nHeight, // 窗口高宽
HWND hwndParent, // 该窗口父窗口句柄
HMENU hMenu, // 主菜单句柄
HINSTANCE hInstance, // 当前应用程序句柄
LPVOID lpParam // 指向一个传递给窗口参数值的指针
)
显示窗口
窗口类显示由 ShowWindow 和 UpdateWindow 函数实现。
ShowWindow 将窗口显示在屏幕上,形式为 BOOL ShowWindow( HWND, int )
显示完窗口后常常使用 UpdateWindow 更新并绘制用户区,并发出 WM_PAINT 消息,形式为 UpdateWindow( HWND )
以上是一部分介绍,如需要完整的资料或者如不符合您的要求,请联系技术人员qq:242219979咨询