You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:36:03