CreateWindowEx i GetLastError zwracają zero, nie można utworzyć nowego okna.

0

Cześć. Natknąłem się na ciekawy problem. Jestem w trakcie pisania wtyczki (dll) do aplikacji. Dzisiaj po kilku dniach przerwy powróciłem do projektu jednak teraz plugin nie może utworzyć nowych okienek. Funkcja CreateWindowEx zwraca zero. Co ciekawe wywołana później funkcja GetLastError również zwraca zero. Zamieszczam kod, z którym mam problem.

	static wchar_t className[] = TEXT("RGB Visual");
	static int co = 0;
	OutputDebugString(std::to_wstring(co++).c_str());
	
	WNDCLASSEX win = { 0 };
	win.cbSize = sizeof(win);
	win.hInstance = 0;
	win.lpszClassName = className;
	win.lpfnWndProc = DefWindowProc;
	win.style = 0;
	win.hIcon = LoadIcon(0, IDI_APPLICATION);
	win.hIconSm = LoadIcon(0, IDI_APPLICATION);
	win.hCursor = LoadCursor(0, IDC_ARROW);
	win.lpszMenuName = 0;
	win.cbClsExtra = 0;
	win.cbWndExtra = 0;
	win.hbrBackground = (HBRUSH)GetSysColor(COLOR_BACKGROUND);		

	if (!RegisterClassEx(&win)) {
		popup_message::g_show("Cannot create window", "RGB Error");
		OutputDebugString(L"LAST ERROR: ");
		OutputDebugString(std::to_wstring(GetLastError()).c_str());
		OutputDebugString(L"\n");
		return;
	}

	window = CreateWindowEx(WS_EX_CLIENTEDGE, className, L"RGB Visual", WS_OVERLAPPEDWINDOW, 0, 0, 300, 100, core_api::get_main_window(), 0, 0, 0);
	ShowWindow(window, SW_SHOW);

Ten kod siedzi w konstruktorze klasy i nie był zmieniany. Konstruktor wywoływany jest tylko raz w czasie działania aplikacji. Szukałem w googlach i natrafiłem na podobne problemy, jednak podane tam rozwiązania nie skutkują poprawą.
Gdzie mogę szukać błędu? :)

1

win.hInstance = 0;
Tu coś powinno być. Tak samo w CreateWindowEx.

win.hbrBackground = (HBRUSH)GetSysColor(COLOR_BACKGROUND);

win.hbrBackground = (HBRUSH)(COLOR_BACKGROUND+1);

jeśli już.

0

Zastosowanie obu porad rozwiązało problem. Dzięki za pomoc ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1