![](/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.