2.01 注册窗口类
窗口类的概念
窗口类是包含窗口各种参数信息的数据结构
每个窗口都具有窗口类, 基于窗口类创建窗口
每个窗口类都有名称, 使用前需要注册到系统
分类
系统窗口类: 系统已经定义的窗口类, 所有应用程序可直接使用
应用程序全局窗口类: 需要用户自定义, 当前应用程序所有模块可使用
应用程序局部窗口类: 需要用户自定义, 当前应用程序本模块可使用
系统窗口类
直接使用,无需自己注册
如: 按钮, 编辑框
CreateWindow("Button",...)
全局/局部窗口类
注册一个窗口类
WNDCLASS wc = { 0 };
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.hCursor = NULL;// 默认鼠标样式
wc.hIcon = NULL;// Icon
wc.hInstance = hIns;
wc.lpfnWndProc = WndProd; //处理函数名称
wc.lpszClassName = "Main";
wc.lpszMenuName = NULL; // 不要菜单
wc.style = CS_HREDRAW | CS_VREDRAW; // 窗口水平/垂直变化时 重绘窗口
RegisterClass(&wc); // 将以上赋值写入操作系统, 注册成功返回数字标识,失败返回0
WNDCLASS
typedef struct _WNDCLASS {
UINT style; // 窗口类风格
WNDPROC lpfnWndProc; // 窗口处理函数
int cbClsExtra; // 窗口类附加数据buff大小
int cbWndExtra; // 窗口附加数据buff大小
HINSTANCE hInstance; // 当前模块实例句柄
HICON hIcon; // 窗口图标句柄
HCURSOR hCursor; // 鼠标句柄
HBRUSH hbrBackground;// 绘制窗口背景画刷句柄
LPCWSTR lpszMenuName; // 窗口菜单资源ID字符串
LPCWSTR lpszClassName; // 窗口类名称
} WNDCLASSW, *PWNDCLASS
设置全局窗口类
wc.style = CS_GLOBALCLASS | ...
CS_HREDRAW | CS_VREDRAW : 水平垂直变换时,重绘窗口
CS_DBLCKS: 允许窗口接收鼠标双击
CS_NOCLOASE: 没有关闭按钮