Windows API一日一练(5)RegisterClass和RegisterClassEx函数

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
为了可以创建自己的窗口,就需要向 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 注册这个窗口类型。
 
如果注册成功,返回这个窗口类型的标识号,可以用标识号进行创建窗口,查找窗口和注销窗口类型等等。如果失败返回的值是空,因此可以通过检查返回值为判断是否调用成功。
            

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/uytrrfg/article/details/83686218
今日推荐