Win32 程式註冊窗口類成功,`CreateWindow` 返回 `NULL`,`GetLastError()` 返回 `0` (ERROR_SUCCESS),無法定位錯誤。
窗口過程函數 `WndProc` 末尾:
// 錯誤代碼
return DefWindowProc(hWnd, message, lParam, wParam); // 參數順序錯誤!
// 正確順序
return DefWindowProc(hWnd, message, wParam, lParam);
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 10, 10, L"Hello", 5);
EndPaint(hWnd, &ps);
return 0;
}
}
return DefWindowProc(hWnd, msg, wParam, lParam); // 參數順序正確
}
Win32 窗口創建失敗且 `GetLastError=0` 多為窗口過程邏輯錯誤(參數顛倒、返回值錯誤、未處理關鍵消息),而非系統資源問題。優先檢查 `WndProc` 中 `DefWindowProc` 調用正確性。