![](/img/trans.png)
[英]How can I modify this MFC-based code snippet to use a window class name of my own choice?
[英]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 字符組成的常量字符串,該字符串可能以空字符結尾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.