我正在尝试创建hwnd窗口,但是当我尝试注册它时,我会得到一个错误。错误是MessageBox通知,如果注册表函数无法注册窗口,那么我已经复制了大部分代码,所以我并不真正理解问题所在。下面是用VS13编译的代码:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
WNDCLASSEX WndClass;
HWND hwnd;
MSG Msg;
hInst = hInstance;
WndClass.cbSize = sizeof(WNDCLASSEX);
WndClass.style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
WndClass.lpfnWndProc = WindowProcedure;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = hInstance;
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW);
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = (LPCWSTR)gszClassName;
WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if (!RegisterClassEx(&WndClass)){
MessageBox(NULL, L"Unable to register window", L"Error", MB_ICONSTOP | MB_OK);
return 0;
}
hwnd = CreateWindowEx(
WS_EX_STATICEDGE,
L"MyMainClass",
L"Try v2.0",
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT,
500, 400,
NULL, NULL,
hInstance,
NULL);
if (hwnd == NULL){
MessageBox(NULL, L"Unable to create window", L"Error", MB_ICONSTOP | MB_OK);
return 0;
}发布于 2014-05-04 10:50:16
WndClass.style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;这是你的问题。根据文档的说法
风格 班级风格。该成员可以是类风格的任意组合。
在“类样式”链接之后,我们得到以下内容:
类样式定义窗口类的其他元素。两个或多个样式可以使用按位或(\)运算符组合。若要将样式分配给窗口类,请将样式分配给WNDCLASSEX结构的样式成员。有关类样式的列表,请参见窗口类样式。
在这个链接之后,我们得到了一个有效窗口类样式的列表。不幸的是,你使用的那些并不在清单上。我认为您可能打算将这些信息提供给CreateWindowEx的dwStyle参数,该参数接受每个文档的这些有效的窗口样式。
如果它有助于澄清问题,则窗口类样式与窗口样式不一样。
https://stackoverflow.com/questions/23455250
复制相似问题