Windows程序基础

MSG结构具有如下形式:
1
typedef struct tagMSG { 2 HWND hwnd; 3 UINT message; 4 WPARAM wParam; 5 LPARAM lParam; 6 DWORD time; 7 POINT pt; 8 DWORD lPrivate; 9 } MSG, *PMSG, *NPMSG, *LPMSG;

 MSG结构中包含了线程的消息队列中的消息信息。

hwnd 标识了接收的消息的窗口过程所属的窗口的句柄。
message 指定了消息号。 WM_XXX
wParam 指定了消息的附加信息。具体的含义与message成员的值有关。实际上为 unsigned int
lParam 指定了消息的附加信息。具体的含义与message成员的值有关。实际上为 long
time 指定了发出消息的时间。消息队列时间
pt 指定了发出消息时光标位置的屏幕坐标。 当前鼠标位置

 

 

 

 

 

 

 

 

 

1 int WINAPI WinMain(
2     HINSTANCE hInstance,
3     HINSTANCE hPrevInstance,
4     LPSTR lpCmdLine,
5     int nShowCmd
6 );
WINAPI 其实就是 __stdcall 即调用约定
hInstance:表示改程序的当前运行的实例句柄。
hPrevInstance:表示当前实例的前一个句柄。Win32环境下参数为NULL。
lpCmdLine:是一个以空终止的字符串,指定传递给应用程序的命令行参数。 
nShowCmd:指定程序的窗口应该如何显示。

创建窗口的过程:
1、设计一个窗口类
2、注册窗口类
3、创建窗口
4、显示及更新窗口

1、设计一个窗口类
窗口特征WNDCLASS结构体:
 1 typedef struct _WNDCLASS 
 2 {
 3     UINT style;  ==》指定窗口的样式
 4     WNDPROC lpfnWndProc; ==》  lpfnWndProc 是一个函数指针,指向窗口过程函数,窗口过程函数是一个回调函数。
 5     int cbClsExtra; ==》 该参数没有使用,直接设置为0即可。
 6     int cbWndExtra;  ==》 该参数没有使用,直接设置为0即可。
 7     HANDLE hInstance;  ==》 hInstance 指向包含窗口过过程的程序的实例句柄。即WinMain里的句柄。
 8     HICON hIcon;  ==》 指定窗口类的图标句柄。如果加载的是系统的标准图标,那么第一个参数必须为NULL。
 9     HCURSOR hCursor; ==》和上面一样。
10     HBRUSH hbrBackground;  ==》指定窗口类的背景画刷句柄。
11     LPCTSTR lpszMenuName; ==》指定菜单资源的名字。
12     LPCTSTR lpszClassName; ==》指定窗口类的名字。
13 } WNDCLASS;
2、注册窗口类
设计完成后,需要调用RegisterClass进行注册,参数为创建窗口类对象的指针。

3、创建窗口
 1 HWND CreateWindow(
 2     LPCTSTR lpClassName, ==》 指定窗口名称
 3     LPCTSTR lpWindowName, ==》指定窗口的名字。如果窗口样式指定了标题栏,那么窗口名字将会显示到标题栏上。
 4     DWORD dwStyle, ==》 指定创建窗口的样式。
 5     int x,
 6     int y,
 7     int nWidth,
 8     int nHeight,
 9     HWND hWndParent, ==》 指定被创建窗口的父窗口句柄。
10     HMENU hMenu, ==》 指定窗口餐单的句柄
11     HANDLE hInstance, ==》 指定窗口所属的应用程序实例的句柄。
12     PVOID lpParam ==》 多数窗口设置为 NULL
13 );
4、显示及更新窗口
(1)显示窗口
1 BOOL ShowWindow( 
2     HWND hWnd, 
3     int nCmdShow ==》 指定窗口的显示状态 
4 ); 

 (2)更新窗口

1 BOOL UpdateWindow( 
2     HWND hWnd
3 ); 
 
 
原文地址:https://www.cnblogs.com/thismelongaotian/p/12558882.html