Cansisti utworzono 6 września 2012 utworzono 6 września 2012 Mam taki oto kod: [CODE] char ExtendNum = ComboBox_GetCurSel( hcombo ); switch( ExtendNum ) { case 0: Extend = ".txt"; break; case 1: Extend = ".log"; break; case 2: Extend = ".lst"; break; case 3: Extend = OtherExtand(); //Inna funkcja break; case CB_ERR: pl.msg(1); break; default: pl.msg(1); break; } [/CODE] I chociaż w comboboxie wybrałem opcję 2, 3 itd program uparcie zawsze wybiera case 0 (jestem pewien że tutaj leży błąd, bo wcześniej w case 0 dodałem funkcję MessageBox wywalającą napis "Wybrano txt" i jakąkolwiek opcję wybrałem to się działo) Więc... czy mój program ogłupiał? Czy to ja nie widzę jakiegoś głupiego błędu? Z góry dziękuję
leggo komentarz 6 września 2012 komentarz 6 września 2012 Switch wygląda w porządku. Powinno działać poprawnie (u mnie działa). Spróbuj "rebuild solution", jeśli nie pomorze to wrzuć tutaj cały program lub jego [u][b]kompilujący się[/b][/u] wycinek zawierający wszystko dotyczące problemu.
Cansisti komentarz 7 września 2012 Autor komentarz 7 września 2012 Z racji iż nie lubię wklejać całego mojego kodu na forum (a nuż znajdzie się taki co sobie go skopiuje i rozpowie że to jego), skłoniło mnie to do spojrzenia w kod i wywalenia z niego nieistotnych dla problemu części i zobaczyłem że... zmienna HWND odpowiedzialna za ten mój combobox... była zadeklarowana 2 razy, raz jako globalna a raz w WInMain... nie wiem czemu kompilator się tego nie czepił ale wyglądało to tak: [CODE] HWND hCombo int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { HWND hCombo = CreateWindowEx(...); //usunąłem tutaj HWND //itd } [/CODE] W każdym razie dzięki za odpowiedź o dobrze działającym switchu, bo gdyby nie to dalej w nim szukałbym błędu.
leggo komentarz 7 września 2012 komentarz 7 września 2012 Kompilator się nie czepiał, bo nie ma w tym nic zdrożnego. W momencie, gdy definiujesz zmienną lokalną o takiej samej nazwie co zmienna globalna, zmienna globalna jest przesłaniana przez lokalną. Czyli wszystkie odwołania do tej zmiennej w obrębie winmain tyczyły się jej wersji lokalnej i to ona była zmieniana. Tymczasem wewnątrz wndproc (poza winmain) używana była zmienna globalna, która pozostawała nietknięta od czasu deklaracji (miała wartość początkową).
Cansisti komentarz 7 września 2012 Autor komentarz 7 września 2012 No tak a ja tego comboboxa stworzyłem na tej zmiennej w winmain
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.