我想我已经在Visual Studio中创建了一个窗口,但是当我运行代码时,找不到该窗口。我不知道这是因为未创建窗口还是仅仅是因为找不到窗口。
我是Visual Studio的新手,所以我观看了视频,ChiliTomatoNoodle's on YT,,该视频显示了如何创建窗口。我尝试在任务管理器中查找,但是找不到窗口。
我意识到我不应该粘贴整个文件,但是我不知道我在做什么,所以我无法将问题隔离到代码中的某个区域。
#include <Windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CLOSE:
PostQuitMessage(69);
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int CALLBACK WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
const auto pClassName = "hw3d";
//register window class
WNDCLASSEX wc = { 0 };
wc.cbSize = sizeof(wc);
wc.style = CS_OWNDC;
wc.lpfnWndProc = DefWindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL; //NULL and nullptr are the same
wc.hCursor = NULL;
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszMenuName = pClassName;
wc.hIconSm = NULL;
RegisterClassEx(&wc);
//create window instance
HWND hWnd = CreateWindowEx(
0, pClassName,
"Hardware 3D Window",
WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
200, 200, 640, 480,
NULL, NULL, hInstance, NULL
);
//show the window
ShowWindow(hWnd, SW_SHOW);
//message pump
MSG msg;
BOOL gResult;
while ((gResult = GetMessage(&msg, NULL, 0, 0)) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if (gResult == -1)
{
return -1;
}
else
{
return msg.wParam;
}
}
我的期望(从观看视频开始)是,当我运行代码时,将出现一个窗口,然后当我关闭窗口时,代码将停止运行。当我运行代码时,没有窗口出现,但是直到点击“停止调试”按钮,代码才会结束,因此至少while循环起作用了。除此之外,我不知道代码是否错误,设置是否错误,是否删除了我需要的内容,等等。