繁体   English   中英

为什么我不能将“游戏 Window 类”设置为我的 class 名称?

[英]Why can I not set "Game Window Class" as my class name?

我想知道为什么我不能设置名称。 这是错误:

图片

它甚至不允许我分配一个字符。

#include <windows.h>

LRESULT CALLBACK window_callback(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd)
{
    //create window class
    WNDCLASS window_class = {};
    window_class.style = CS_HREDRAW | CS_VREDRAW;
    window_class.lpszClassName = "Game Window Class";
    window_class.lpfnWndProc = window_callback;//callback
    
    //Register class

    //Create window
}

WNDCLASS::lpszClassName是一个LPCTSTR指针,即一个const TCHAR*指针。 UNICODE被定义时, TCHAR映射到wchar_t ,否则它映射到char

您正在使用定义的UNICODE编译您的项目,因为lpszClassName需要一个指向 Unicode 字符串的宽const wchar_t*指针,但是您给它一个(衰减的)窄const char*指针,而不是指向 ANSI 字符串文字,因此出现错误。

您可以:

  • 在项目设置中取消定义UNICODE

  • L作为字符串文字的前缀,使其成为 Unicode 字符串:

    window_class.lpszClassName = L"Game Window Class";

  • 将字符串文字包装在TEXT()中:

    window_class.lpszClassName = TEXT("Game Window Class");

window_class.lpszClassName = "游戏 Window 类";

文本中有断点。 尝试改用 Game_Window_Class 或只是 GameWindowClass

LPCWSTR 是一种类型。

LPCWSTR 是一个 32 位指针,指向一个由 16 位 Unicode 字符组成的常量字符串,该字符串可能以空字符结尾

参考: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/76f10dd8-699d-45e6-a53c-5aefc586da20

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM