C++开发Pong游戏调用CreateWindow出现E0029、C2059语法错误求助
报错修复方案
核心问题1:字符集不匹配(对应E0167、C2664报错)
Visual Studio默认Win32项目启用UNICODE字符集,所有Win32 API的字符串参数要求使用宽字符格式,你需要给传入CreateWindow的窗口名称字符串添加L前缀:
将原代码中
CreateWindow(window_class.lpszClassName, "My First Game!", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 1280, 720, 0, 0, hInstance, 0);
修改为
CreateWindow(window_class.lpszClassName, L"My First Game!", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 1280, 720, 0, 0, hInstance, 0);
核心问题2:语法错误排查(对应E0029、C2059报错)
最初的括号语法报错的可能原因有两个:
- 实际编写代码时错误使用了HTML转义引号
",替换为标准英文双引号"即可 - 早期版本
CreateWindow传参数量不匹配,你补充参数后现在11个传参已经符合API定义要求
附加修复:窗口显示逻辑补充
修复上述问题后代码可正常编译,但运行不会弹出窗口,你需要在CreateWindow调用后添加消息循环代码:
MSG msg; while (GetMessage(&msg, nullptr, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam;
内容的提问来源于stack exchange,提问作者Pranksterbunny
相关产品推荐
相关产品推荐

