【Demo 0025】注册/反注册窗体类RegisterClassEx/UnregisterClass
所有窗体在创建前都必须注册窗体类,只有注册的窗体类才被系统认知并允许实例化,换句话说通过注册告诉进程窗体管理器此类窗体的属性如: 背景色,窗体上的鼠标样式以及窗体事件处理函数等; 有一些控件类系统自带了的可以不用注册即可实例化,在不需要时反注册掉,以便释放类占用的内存。
(一) 函数声明
I). 类注册
ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx );
注册一个窗体类,以便通用CreateWindowEx, CreateWindow来实例化一个窗体
ATOM RegisterClass(CONST WNDCLASS *lpWndClass );
与RegisterClassEx功能一样, 仅参数WNDCLASS中不支持iconsm的设置
Code1: 以下代码演示了如何注册一个函数, 必须要设置的参数
1. 类名
2. 窗体过程函数
//////////////////////////////////////////////////////////////////////////
bool RegisterWndClass(HINSTANCE hInstance, const TCHAR* szClsName)
{
WNDCLASSEX wcs = {0};
wcs.cbSize = sizeof(WNDCLASSEX);
wcs.hbrBackground = (HBRUSH)GetStockObject(COLOR_APPWORKSPACE);
wcs.lpszClassName = szClsName;
wcs.lpfnWndProc = WndProc;
wcs.hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW));
wcs.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
wcs.style = CS_VREDRAW|CS_HREDRAW;
return (0 != RegisterClassEx( wcs));
}
II). 类反注册
BOOL UnregisterClass(LPCTSTR lpClassName, HINSTANCE hInstance);
从进程中清除己注册的类,并释放类占用的内存,
Code2. 以下代码演示了反注册现有类
if (WM_QUIT == Msg.message)
{
if (UnregisterClass(gszClsName, ghInstance))
{
TCHAR szInfo[256];
_stprintf(szInfo, _T("Destroy [%s] window class"), gszClsName);
OutputDebugString(szInfo);
}
return;
}
(二) 特别说明
1. 注册后的类与C++中的类意义是一样的, 他们有着共同的属性,同样的类名, 同样的窗体处理函数以及背景色
2. 同一个类在一个进程中只有注册一次(除非反注册后),若类己存在时再注册会返回失败
3. 清除类前必须要消除此类的实例才能成功
from:http://www.cnblogs.com/ztercel/archive/2011/08/15/2139972.html
C/C++ Qt TableDelegate 自定义代理组件 TableDelegate 自定义代理组件的主要作用是对原有表格进行调整,例如默认情况下Table中的缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是输入,此时就需要重写编辑框实现选择的效果,代理组件常用于个性化定制Table表格中的字段类型。
相关文章
- 注册破解加暗桩去除下篇去除暗桩部分
- Dubbo -- 系统学习 笔记 -- 示例 -- 多注册中心
- Dubbo -- 系统学习 笔记 -- 示例 -- 只注册
- 【前端学习之HTML&CSS进阶篇】-- HTML第五篇 -- 表单练习(Bilibili注册界面模仿)
- Qt-信号和槽函数传递自定义参数前需注册自定义数据类型
- eureka的注册
- Nacos当注册中心
- PHP+jQuery 注册模块的改进之三:使用 Smarty3
- SpringCloud注册中心Eureka常用配置和注解
- 安装SecureCRT注册
- springCloud Eureka 注册中心原理及配置理解
- linux driver ------ platform模型,通过杂项设备(主设备号是10)注册设备节点
- C/C++注册动态对象到Lu系统并进行运算符重载
- 未在本地计算机上注册jet.oledb.4.0解决方案
- Egg:使用joi进行参数校验以及注册接口小demo
- 批量注册阿里云备案域名