为了可以创建自己的窗口,就需要向 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