Windows API一日一练 5 RegisterClass和RegisterClassEx函数
发布时间:2020-12-14 02:34:35 所属栏目:Windows 来源:网络整理
导读:为了可以创建自己的窗口,就需要向 Windows 操作系统注册窗口类型,以便后面创建窗口时调用。当然,如果使用 Windows 预先注册的窗口是不需要注册的。 ? 函数声明如下: #if(WINVER = 0x0400) WINUSERAPI ATOM WINAPI RegisterClassExA( ??? __in CONST WNDC
为了可以创建自己的窗口,就需要向
Windows
操作系统注册窗口类型,以便后面创建窗口时调用。当然,如果使用
Windows
预先注册的窗口是不需要注册的。
?
函数声明如下:
#if(WINVER >= 0x0400)
WINUSERAPI
ATOM
WINAPI
RegisterClassExA(
??? __in CONST WNDCLASSEXA *);
WINUSERAPI
ATOM
WINAPI
RegisterClassExW(
??? __in CONST WNDCLASSEXW *);
#ifdef UNICODE
#define RegisterClassEx?RegisterClassExW
#else
#define RegisterClassEx?RegisterClassExA
#endif // !UNICODE
?
函数的输入参数是一个
WNDCLASSEXA
或
WNDCLASSEXW
的指针。这里主要介绍
UNICODE
版本的函数定义,
WNDCLASSEXW
的结构定义如下:
typedef struct tagWNDCLASSEXW {
??? UINT??????? cbSize;
??? /* Win 3.x */
??? UINT??????? style;
??? WNDPROC???? lpfnWndProc;
??? int???????? cbClsExtra;
??? int???????? cbWndExtra;
??? HINSTANCE?? hInstance;
??? HICON?????? hIcon;
??? HCURSOR???? hCursor;
??? HBRUSH????? hbrBackground;
??? LPCWSTR???? lpszMenuName;
??? LPCWSTR???? lpszClassName;
??? /* Win 4.0 */
??? HICON?????? hIconSm;
} WNDCLASSEXW,*PWNDCLASSEXW,NEAR *NPWNDCLASSEXW,FAR *LPWNDCLASSEXW;
?
cbSize
是本结构的字节大小,一般设置为
sizeof(WNDCLASSEXW);
style
是窗口类型。
lpfnWndProc
是窗口处理消息的回调函数。
cbClsExtra
是窗口类型的扩展。
cbWndExtra
是窗口实例的扩展。
hInstance
是窗口实例句柄。
hIcon
是窗口图标。
hCursor
是窗口的光标。
hbrBackground
是窗口背景颜色。
lpszMenuName
是窗口菜单名称。
lpszClassName
是窗口类型的名称。
hIconSm
是窗口小图标。
?
调用这个函数的实例如下:
#001?//
#002?//?
函数
: MyRegisterClass()
#003?//
#004?//?
目的
:
注册一个窗口类型
.
#005?//
#006?//?
蔡军生
?2007/07/12
#007?//
#008?ATOM MyRegisterClass(HINSTANCE hInstance)
#009?{
#010??WNDCLASSEX wcex;
#011?
#012??wcex.cbSize = sizeof(WNDCLASSEX);
#013?
#014??wcex.style???????????? = CS_HREDRAW | CS_VREDRAW;
#015??wcex.lpfnWndProc?= WndProc;
#016??wcex.cbClsExtra?????????? = 0;
#017??wcex.cbWndExtra??????? = 0;
#018??wcex.hInstance????? = hInstance;
#019??wcex.hIcon??????????? = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_TESTWIN));
#020??wcex.hCursor???????? = LoadCursor(NULL,IDC_ARROW);
#021??wcex.hbrBackground??? = (HBRUSH)(COLOR_WINDOW+1);
#022??wcex.lpszMenuName???? = MAKEINTRESOURCE(IDC_TESTWIN);
#023??wcex.lpszClassName???? = szWindowClass;
#024??wcex.hIconSm??????? = LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_SMALL));
#025?
#026??return RegisterClassEx(&wcex);
#027?}
?
第
10
行定义一个窗口结构的对象
wcex
。
第
12
行设置窗口结构的大小。
第
14
行设置窗口类型。
第
15
行设置窗口消息处理函数
WndProc
。
第
16
行设置窗口类型的扩展为空。
第
17
行设置窗口实例的扩展为空。
第
18
行设置窗口当前实例句柄
hInstance
。
第
19
行设置窗口图标。
第
20
行设置光标为箭头。
第
21
行设置窗口背景颜色为白色。
第
22
行设置窗口菜单。
第
23
行设置窗口类型名称。
第
24
行设置窗口小图标。
第
26
行是调用函数
RegisterClassEx
注册这个窗口类型。
?
如果注册成功,返回这个窗口类型的标识号,可以用标识号进行创建窗口,查找窗口和注销窗口类型等等。如果失败返回的值是空,因此可以通过检查返回值为判断是否调用成功。
?
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows和linux下 Python2,Python3 的环境及安装
- 用批处理修复 win10 无法升级的问题
- windows – 今天有没有理由在一个林中拥有多个域
- 在Windows 下如何使用 AspNetCore Api 和 consul
- Windows 10 IoT Raspberry Pi 2:DHT22 / AM2302
- 在Windows上枚举所有可用视频编解码器的最佳方法?
- Windows服务 – Windows服务或计划任务,我们喜欢哪一个?
- Windows Azure SDK返回未知的AccountType:undefined
- windows – 是否可以列出我无权访问的所有权限
- Office 64位中的32位dll