❑ 参数hInstance表示该程序当前运行的实例的句柄,这是一个数值。当程序在Windows下运行时,
它唯一标识运行中的实例。一个应用程序可以运行多个实例,每运行一个实例,系统都会给该
实例分配一个句柄值,并通过hInstance参数传递给WinMain函数。
❑ 参数hPrevInstance表示当前实例的前一个实例的句柄。在Win32环境下,这个参数不再起作用,
为NULL。
❑ 参数lpCmdLine是一个字符串指针,指定传递给应用程序的命令行参数。
❑ 参数nCmdShow指定程序的窗口应该如何显示,例如最大化、最小化、隐藏等。这个参数的值
由该程序的调用者所指定,应用程序通常不需要去理会这个参数的值。
WinMain函数接收4个参数,这些参数都是在系统调用WinMain函数时,传递给应用程序的。
2.2.2 创建窗口
创建一个完整的窗口,需要经过下面4个操作步骤:定义窗口类、注册窗口类、创建窗口实例、
显示及更新窗口。
1. 定义窗口类
在创建一个窗口前,必须对该类型的窗口进行设计,指定窗口的特征。窗口的特征是由
WNDCLASS结构体来定义的。WNDCLASS结构体的定义如下:
typedef struct tagWNDCLASS {
UINT style; //窗口风格
WNDPROC lpfnWndProc; //指向窗口处理函数的函数指针
int cbClsExtra; //窗口结构中的预留字节数
int cbWndExtra; //为其他创建窗口预留字节数
HINSTANCE hInstance; //注册该窗口类的实例句柄
HICON hIcon; //代表该窗口类的图标句柄
HCURSOR hCursor; //该窗口客户区鼠标光标句柄
HBRUSH hbrBackGround; //该窗口背景颜色句柄
LPCSTR lpszMenuName; //指向窗口菜单名的字符指针
LPCSTR lpszClassName; //指向窗口名的字符指针
} WNDCLASS, *PWNDCLASS,NEAR *NPWNDCLASS,
FAR *LPWNDCLASS;
2. 注册窗口类
窗口类(WNDCLASS)设计完成后,需要调用RegisterClass()函数对其进行注册,注册成功后,
才可以创建该类型的窗口。注册函数的原型声明如下:
BOOL RegisterClass(CONST WNDCLASS *lpWndClass);
该函数只有一个参数,即上一步骤中所设计的窗口类对象的指针。
3. 创建窗口实例
设计好窗口类并且将其成功注册之后,就可以用CreateWindow()函数产生这种类型的窗口了。函
数Create Window()原型如下:
HWND CreateWindow
(LPCTSTR lpszClassName, //窗口类名
33
励志照亮人生 编程改变命运
第 3 章 Windows编程与MFC基础