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
}
}