0

所以我试着把一个窗口放在一起,但是当我需要给窗口命名时,我告诉了我。(错误:“const char*”类型的参数与“LPCWSTR”类型不兼容) CreateWindow 方法的编程在下面。错误应该在第 2 行。


hwnd = CreateWindow(
    "Engine_Winter_Name",
    "Winter Engine",
    WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION,
    GetSystemMetrics(SM_CXSCREEN)/2 - WIDTH/2,
    GetSystemMetrics(SM_CYSCREEN)/2 - HEIGHT/2,
    WIDTH,
    HEIGHT,
    (HWND)NULL,
    (HMENU)NULL,
    hInstance,
    (LPVOID*)NULL);

if (!hwnd)
    return false;

ShowWindow(hwnd, nCmdShow);

return true;

非常欢迎所有帮助!提前致谢。

4

2 回答 2

0

你需要一个宽字符串。用 L 前缀你的字符串。

hwnd = CreateWindow(
    L"Engine_Winter_Name",
    L"Winter Engine",
于 2014-11-02T20:51:49.387 回答
0

您正在使用UNICODE定义进行编译,这意味着例如CreateWindow宏映射到CreateWindowW,它需要宽字符(wchar_t基于 - 的)参数:

hwnd = CreateWindow(
    L"Engine_Winter_Name",
    L"Winter Engine",
    WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION,
    GetSystemMetrics(SM_CXSCREEN)/2 - WIDTH/2,
    GetSystemMetrics(SM_CYSCREEN)/2 - HEIGHT/2,
    WIDTH,
    HEIGHT,
    HWND(),
    HMENU(),
    hInstance,
    nullptr);

if (!hwnd)
    return false;

ShowWindow(hwnd, nCmdShow);

对于现代 Windows 桌面编程,通常最好使用基于 Unicode 的 API,就像您正在做的那样。

于 2014-11-02T20:53:50.553 回答