我沒有太多的Windows編程經驗,但無法明確地看到這段代碼有什麼問題,但窗口沒有打開。儘管有時並不總是,它會在任務管理器中打開,所以我猜測它是註冊類並創建窗口,但是問題出在ShowWindow()函數上。但是,我不積極。Windows編程,窗口沒有打開,沒有生成錯誤
我的理解程序的流程是: 窗口創建與註冊類。 顯示窗口。 連續查找在Proc窗口中處理的消息。
我覺得我已經完成了所有這些事情,所以我的理解錯誤,或者是我的代碼丟失了什麼?
謝謝。
源代碼:
#include <Windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_DESTROY)
{
PostQuitMessage(0);
return 0;
}
DefWindowProc(hwnd, uMsg, wParam, lParam);
}
int WINAPI wWinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
//Variable for message loop.
MSG msg;
//Setting up the window class.
WNDCLASSEX windowClass;
windowClass.cbSize = sizeof(windowClass);
windowClass.style = CS_HREDRAW | CS_VREDRAW | CS_PARENTDC;
windowClass.lpfnWndProc = WindowProc;
windowClass.hInstance = hinstance;
windowClass.hbrBackground = (HBRUSH)COLOR_WINDOW;
windowClass.lpszClassName = "WindowClass";
RegisterClassEx(&windowClass);
HWND windowHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "WindowClass", "My Program", WS_OVERLAPPEDWINDOW, 500, 200, 800, 500, NULL, NULL, hinstance, 0);
if (!windowHandle)
return FALSE;
ShowWindow(windowHandle, nCmdShow);
// Start the message loop.
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// Return the exit code to the system.
return msg.wParam;
}
檢查API調用失敗並查看GetLastError說什麼。 –
我會使用WNDCLASSEX windowClass = {};'以確保結構的所有元素都被初始化爲零。 –
謝謝。我這樣做,它的工作。 – kazama