簡體   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