WINCLASSEX与WINCLASS结构有什么区别? CreateWindowEx和Createwindow有什么区别?
发布网友
发布时间:2022-04-30 17:41
我来回答
共1个回答
热心网友
时间:2023-10-09 07:03
以下内容来自MSDN:
1.The WNDCLASSEX structure is similar to the WNDCLASS structure. There are two differences. WNDCLASSEX includes the cbSize member, which specifies the size of the structure, and the hIconSm member, which contains a handle to a small icon associated with the window class.
2.To use extended window styles in addition to the styles supported by CreateWindow, use the CreateWindowEx function.
敝人不才,试着翻译一下:
1.WNDCLASSEX 跟 WNDCLASS 两种结构体是很相近的。他们有两个不同的地方.WNDCLASSEX拥有一个 cbSize 成员,是用于指示结构体的大小的。另外还有一个 hIconSm 成员,包含了window class 的小图标的句柄。
2.为了使用扩展的 windows 风格,使用 CreateWindowEx 函数。
简单来说,就是WNDCLASSEX多了两个成员(分别是:UINT cbSize 和 HICON hIconSm )。
两者的填充方法分别是(假设已有 WNDCLASSEX wndclass; 的声明)
wndclass.cbSize = sizeof( WNDCLASSEX );
wndclass.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
其中hIconSm一般可以使用跟hIcon成员一样的内容。如果能另外提供小图标就更好了。
而CreateWindowEx多了一个参数(是:DWORD dwExStyle )。
dwExStyle 可以取的值为
WS_EX_ACCEPTFILES, WS_EX_APPWINDOW, WS_EX_CLIENTEDGE,
WS_EX_COMPOSITED, WS_EX_CONTEXTHELP, WS_EX_CONTROLPARENT,
WS_EX_DLGMODALFRAME, WS_EX_LAYERED, WS_EX_LAYOUTRTL, WS_EX_LEFT,
WS_EX_LEFTSCROLLBAR, WS_EX_LTRREADING, WS_EX_MDICHILD,
WS_EX_NOACTIVATE, WS_EX_NOINHERITLAYOUT, WS_EX_NOPARENTNOTIFY,
WS_EX_OVERLAPPEDWINDOW, WS_EX_PALETTEWINDOW, WS_EX_RIGHT,
WS_EX_RIGHTSCROLLBAR, WS_EX_RTLREADING, WS_EX_STATICEDGE,
WS_EX_TOOLWINDOW, WS_EX_TOPMOST, WS_EX_TRANSPARENT,
WS_EX_WINDOWEDGE.
在现在使用中,WNDCLASS 已经被淘汰了,使用的都是 WNDCLASSEX 。另外需要注意的是注册WNDCLASSEX 实体的时候要使用RegisterClassEx函数。