Win32API全局窗口类的注册
- 应用程序全局窗口类的注册
- typedef struct tagWNDCLASSEX {
- UINT cbSize; //结构体的大小,用sizeof得出
- UINT style; //窗口类的风格,默认设置左右画出
- WNDPROC lpfnWndProc; //回调函数,窗口处理函数,干活的人
- int cbClsExtra; //窗口类的附加数据Buff的大小
- int cbWndExtra; //窗口的附加数据Buff的大小
- HINSTANCE hInstance; //当前模块的实例句柄
- HICON hIcon; //窗口图标句柄
- HCURSOR hCursor; //鼠标的句柄
- HBRUSH hbrBackground; //绘制窗口背景的画刷句柄
- LPCTSTR lpszMenuName; //窗口菜单的资源ID字符串
- LPCTSTR lpszClassName; //窗口类的名称
- HICON hIconSm; //窗口的小图标句柄
- } WNDCLASSEX, *PWNDCLASSEX;
- typedef struct tagWNDCLASSEX {
- 全局窗口类注册,要在风格中增加CS_GLOBALCLASS,局部的窗口类则不添加此风格参数
例如: WNDCLASSEX wcex = {0}; wcex.stle = ... | CS_GLOBALCLASS;
Win32API CreateWindow
- HWND CreateWindowEx( DWORD dwExStyle, //窗口的扩展风格 LPCTSTR lpClassName, //已经注册的窗口类名称 LPCTSTR lpWindowName, //窗口标题栏名字 DWORD dwStyle, //窗口的基本风格 int x, //窗口左上角水平坐标位置 int y, //窗口左上角垂直坐标位置 int nWidth, //窗口的宽度 int nHeight, //窗口的高度 HWND hWndParent, //窗口的父窗口句柄 HMENU hMenu, //窗口菜单句柄 HINSTANCE hInstance, //应用程序实例句柄 LPVOID lpParam //窗口创建时附加参数 );
- 子窗口的创建
- 创建时要设置父窗口句柄
- 创建风格要增加WS_CHILD|WS_VISIBLE
Win32API 创建窗口类的查找过程
- 1 根据传入的ClassName,在“局部”窗口类中查找,
- 找到执行2,
- 未找到执行3。
- 2 比较“局部”窗口类与创建时传入的“HINSTANCE变量”
- 相等则表示:创建和注册的窗口类在同一模块(同一进程创建),创建窗口并返回。
- 不等则表示:创建和注册的窗口类不在同一模块(不同的进程创建),继续执行3。
- 3 在“全局”窗口类查找
- 找到执行4.
- 未找到执行5.
- 4 使用找到的窗口类的信息,创建窗口返回。
- 5 在“系统”窗口类中查找
- 找到则创建窗口返回。
- 未找到则创建窗口失败。
时间: 2024-11-04 21:50:50