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

Odpowiedz Nowy wątek
2015-05-06 21:55
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? :)

edytowany 2x, ostatnio: tomepaw, 2015-05-06 21:59

Pozostało 580 znaków

2015-05-07 13:41

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ż.

edytowany 1x, ostatnio: Azarien, 2015-05-07 13:42

Pozostało 580 znaków

2015-05-07 16:54
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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