无法设置Windows名称

时间:2014-11-02 20:50:37

标签: c++ char window cons lpcwstr

所以我试图把一个窗口放在一起,但是当我需要命名窗口时,我告诉了我。 (错误:类型“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;

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

2 个答案:

答案 0 :(得分:0)

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

hwnd = CreateWindow(
    L"Engine_Winter_Name",
    L"Winter Engine",

答案 1 :(得分: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,正如您所做的那样。