Windoows窗口程序一
编写窗口程序的步骤: 1.定义WinMain入口函数 2.定义窗口处理函数(处理消息)WindowProc 3.注册窗口类RegisterClass 4.创建窗口(在内存中创建窗口)CreateWindow 5.显示窗口(根据内存的数据将窗口绘制出来)ShowWindow/UpdateWindow 6.消息循环(提取、翻译、派发消息)GetMessage,TranslateMessage,DisptachMessage 7.消息处理
窗口类 窗口类包含了窗口的各种参数信息的数据结构。每个窗口都具有窗口类,基于窗口类创建窗口。每个窗口类都具有一个名称,使用前必须注册到系统。 窗口类的分类 --系统窗口类 系统已经定义好的窗口类,所有应用程序都可以直接使用。 --应用程序全局窗口类 由用户自己定义,当前应用程序所有模块都可以使用。 --应用程序局部窗口类(推荐使用) 由用户自己定义,当前应用程序中本模块可以使用。
ATOM RegisterClass( const WNDCLASS *lpWndClass//窗口类数据 );注册成功后,返回一个数字标识。
ATOM RegisterClassEx( const WNDCLASSEX *lpwcx//窗口类数据(数据类型和RegisterClass不同) );
typedef struct _WNDCLASSEX { UNIT cbSize;//结构体的大小 UINT style;//窗口类的风格 WNDPROC lpfnWndProc;//窗口处理函数 int cbClsExtra;//窗口类的附加数据buffer的大小 int cbWndExtra;//窗口的附加数据buffer的大小 HINSTANCE hInstance;//当前模块的实例句柄 HICON hIcon;//窗口图标句柄--窗口任务栏图标 HCURSOR hCursor;//鼠标的句柄 HBRUSH hbrBackground;//绘制窗口背景的画刷句柄 LPCTSTR lpszMenuName;//窗口菜单的资源ID字符串 LPCTSTR lpszClassName;//窗口类的名称 HICON hIconSm;//窗口的小图标句柄--窗口左上角图标 }WNDCLASSEX;
应用程序全局窗口类的注册,需要在窗口类的风格中增加CS_GLOBALCLASS, 例如:WNDCLASSEX wce={0};wce.style=CS_GLOBALCLASS;
应用程序局部窗口类
再注册窗口类时,不添加CS_GLOBALCLASS风格。