首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法注册hwnd窗口

无法注册hwnd窗口
EN

Stack Overflow用户
提问于 2014-05-04 10:41:20
回答 1查看 958关注 0票数 0

我正在尝试创建hwnd窗口,但是当我尝试注册它时,我会得到一个错误。错误是MessageBox通知,如果注册表函数无法注册窗口,那么我已经复制了大部分代码,所以我并不真正理解问题所在。下面是用VS13编译的代码:

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2014-05-04 10:50:16

代码语言:javascript
复制
WndClass.style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;

这是你的问题。根据文档的说法

风格 班级风格。该成员可以是类风格的任意组合。

在“类样式”链接之后,我们得到以下内容:

类样式定义窗口类的其他元素。两个或多个样式可以使用按位或(\)运算符组合。若要将样式分配给窗口类,请将样式分配给WNDCLASSEX结构的样式成员。有关类样式的列表,请参见窗口类样式

在这个链接之后,我们得到了一个有效窗口类样式的列表。不幸的是,你使用的那些并不在清单上。我认为您可能打算将这些信息提供给CreateWindowExdwStyle参数,该参数接受每个文档这些有效的窗口样式

如果它有助于澄清问题,则窗口类样式与窗口样式不一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23455250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档