Код:
int Window::Create() {
WNDCLASSEX wcex{};
auto szWindowClass = _T("Scream2DEngineWindow");
auto hInstance = GetModuleHandle(nullptr);
auto hIcon = LoadIcon(nullptr, IDI_APPLICATION);
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_DBLCLKS;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = hIcon;
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
wcex.lpszMenuName = nullptr;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = hIcon;
if (!RegisterClassEx(&wcex)) {
return 1;
}
auto hWnd = CreateWindowEx(0, szWindowClass, "Title", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, HWND_DESKTOP, nullptr, hInstance, nullptr);
std::cout << GetLastError() << std::endl;
if (!hWnd) {
return 2;
}
ShowWindow(hWnd, SW_SHOW);
return 0;
}
В консоль выводит "0" (GetLastError), но функция возвращает 2, то есть hWnd == 0.
В чем ошибка?
GetLastError надо вызывать сразу же.
auto hWnd = CreateWindowEx(..);
auto err = GetLastError();
std::cout << err << std::endl;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей