@danilka_master

В чём проблема создания окна?

hMainWindow возвращается нулевое значение. ошибку не вижу в упор
#include <windows.h>

LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
char szClassName[] = "TestWindow";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCommandLine, int nCommandShow) {
	
	HWND hMainWindow;
	WNDCLASSEX wcex;
	wcex.hInstance = hInstance;
	wcex.lpszClassName = szClassName;
	wcex.lpfnWndProc = WindowProcedure;
	wcex.style = CS_HREDRAW | CS_VREDRAW;
	wcex.cbSize = sizeof(WNDCLASSEX);
	wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
	wcex.lpszMenuName = NULL;
	wcex.cbClsExtra = NULL;
	wcex.cbWndExtra = NULL;
	
	if(!RegisterClassEx(&wcex)) {
		MessageBox(NULL, "Class registration failed", "Error", MB_ICONERROR);
		return NULL;
	}
	
	hMainWindow = CreateWindow(szClassName, "Window", WS_OVERLAPPEDWINDOW | WS_VSCROLL, CW_USEDEFAULT, NULL, 400, 300, HWND(NULL), NULL, HINSTANCE(hInstance), NULL);
	
	if(!hMainWindow) {
		MessageBox(NULL, "Window creation failed", "Error", MB_ICONERROR);
		return NULL;
	}
	
	ShowWindow(hMainWindow, nCommandShow);
	UpdateWindow(hMainWindow);
	
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	
	return msg.wParam;
}

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
	return NULL;
}
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@Warlodya
Допишите WindowProcedure

spoiler
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
	switch (message)
	{
	case WM_CREATE:


		return 0;
	case WM_PAINT:
	{
		PAINTSTRUCT ps;
		HDC hdc;
		hdc = BeginPaint(hwnd, &ps);
		FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW + 1));
		EndPaint(hwnd, &ps);
	}
	return 0;

	}
	return DefWindowProc(hwnd, message, wParam, lParam);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
смотрите что вернул GetLastError()
https://docs.microsoft.com/en-us/windows/desktop/d...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы