StaticText nie pojawia sie po nadaniu stylu WS_VISIBLE

0

Witam.
Najpierw opiszę co dany fragment programu ma robić:
jest ComboBox z trzema elementami. Po wybraniu pierwszego elementu mają obok pojawić się nowe kontrolki (Text i kolejny ComboBox). Są one tam umieszczone zawsze, tylko standardowo ustawione na niewidoczne, czyli wybierając pierwszy element miałyby stawać się po prostu widoczne.

PROBLEM: Implementuję kod, kompiluje się wszystko OK, ale w programie to nie działa. Podejrzewam, że przyczyną jest coś związanego z UpdateWindow, ponieważ pozostałe opcje raczej wykluczyłem. Kod zmieniający na kontrolkę widoczną jest na pewno dobry, bo zaimplementowałem go dla testu do wiadomości WM_INITDIALOG, która tworzy dialog i wszystko działa. Kolejną sprawą, którą sprawdziłem jest poprawna obsługa tego ComboBox'a, czy on reaguje, którą pozycję się wybierze. Ustawiłem, że wybierając pierwszą pozycję ma zamknąć okno - i zadziałało. Więc to też wykluczamy. Więc pozostaje chyba tylko problem odświeżenia okna ...

if((id == IDC_COMBO_TYPEOFEXAM) && (code == CBN_SELENDOK))
{
    index_typeofexam = SendDlgItemMessage(hDlg, IDC_COMBO_TYPEOFEXAM, CB_GETCURSEL, 0, 0); // pobiera index wybranej pozycji Combo
    if(index_typeofexam == 0) // jeżeli typ to sprawdzian szóstoklasisty (0) to pokaz dodatkową kontrolkę
    {
        HWND hEG_text = GetDlgItem(hDlg, IDC_STATIC_EGTYPE); // pobiera uchwyt do kontrolki
        LONG hEG_textStyle = GetWindowLong(hEG_text, GWL_STYLE); // pobiera styl kontrolki
        SetWindowLong(hEG_text, GWL_STYLE, hEG_textStyle | WS_VISIBLE); // ustawia kontrolke na widoczna
        UpdateWindow(hDlg);  // odswieza okno
    }
}
0

UPDATE: Spróbowałem zrobić podobną operację, ale z innym typem kontrolki - mianowicie zamiast Static Text zrobiłem dla testu Combo Box i ... WSZYSTKO DZIAŁA! A więc jest tylko problem z aktualizacją tej jednej kontrolki ... Proszę o pomoc.

0

problem: temat.
rozwiazanie: zmienilem recznie na inny
zalecenia: porownaj ze swoim oryginalnym, przemysl swoje formulowanie mysli, i pisz lepsze tematy albo patrz jak laduja w koszu

problem: formatowanie kodu
rozwiazanie: zreformatowalem
zalecenia: jak na drugi raz wkleisz kawal kodu to po pierwsze, nie QUOTE tylko CPP do jasnej anielki, a po drugie, jak juz cos wklejasz to moze potem spojrzyj jak to sie wkleilo i jesli wyglada jak wyciagniete psu z gardla to popraw

0
sferis napisał(a)
[...]
        LONG hEG_textStyle = GetWindowLong(hEG_text, GWL_STYLE);
        SetWindowLong(hEG_text, GWL_STYLE, hEG_textStyle | WS_VISIBLE);
[...]
}

omg a nie lepiej użyć ShowWindow()

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