【发布时间】:2021-11-16 21:05:23
【问题描述】:
#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 = L"Game Window Class";
window_class.lpfnWndProc = window_callback;
// Register Class
RegisterClass(&window_class);
// Create Window
CreateWindow(window_class.lpszClassName, "My First Game!", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 1280, 720, 0, 0, hInstance, 0);
}
我正在关注 Dan Zaidan 关于如何在 C++ 中制作 pong 的教程,但它已经过时一两年了,这可能是我收到这些错误的原因:
E0029 需要一个表达式
C2059 语法错误:')'
还有几行代码,如果需要我可以包含它们。
编辑 1:添加了 1 个 CW_USEDEFAULT。我仍然收到错误,E0167 和 C2664。 编辑 2:添加了更多代码,希望能让你们更好地理解。
【问题讨论】:
-
CreateWindow takes 11 parameters I only count 10 above 并且这个界面多年来(几十年)都没有改变,我怀疑是错字
-
好的,现在阅读minimal reproducible example,因为我们需要查看更多代码和完整的未编辑错误消息,
-
因此,如果您使用
UNICODE,则需要将 Unicode 字符串传递给方法,您不能混合使用 W 和 A api,这是未定义的行为。 -
“已经过时一两年了” - 对于 C++,一两年意味着什么都没有。对于 Windows API,一两年的时间没有任何意义。这些东西不会经常改变。这叫做稳定性,很难找到。
标签: c++ winapi createwindow