[WinAPI] Zaznaczanie Checkbox'a
Ostatnio zmodyfikowano 2013-07-29 13:30
kubek3898 Temat założony przez niniejszego użytkownika |
[WinAPI] Zaznaczanie Checkbox'a » 2013-07-29 10:25:04 Może przejdę od razu do kodu: if(( HWND ) lParam == mojcheckbox ) { int ID_CHECKBOX1 = GetDlgCtrlID( mojcheckbox ); CheckDlgButton( hwnd, ID_CHECKBOX1, BST_CHECKED ); UpdateWindow( mojcheckbox ); if( IsDlgButtonChecked( hwnd, ID_CHECKBOX1 ) == BST_CHECKED ) { SetDlgItemText( hwnd, ID_CHECKBOX1, "Zaznaczono" ); UpdateWindow( mojcheckbox ); } } Wydaje mi się, że powyższy kod jest poprawny, więc dlaczego nie wyświetla nic, plus do tego checkbox się nie zaznacza? Chciałem zrobić opcję, jeśli checbox zaznaczony opcja = true, jeśli nie = false, lecz właśnie nie mogę rozgryźć czemu checkbox się nie zaznacza. Oczywiście ten kod jest w funkcji WinProc |
|
pekfos |
» 2013-07-29 10:34:38 Ten kod w ogóle się wykonuje? |
|
kubek3898 Temat założony przez niniejszego użytkownika |
» 2013-07-29 10:36:12 Tak. Tylko komunikat się nie pokazuje po kliknięciu na checkbox, stąd wnioskuję że mam coś źle z samą obsługą zaznaczania. |
|
Monika90 |
» 2013-07-29 11:41:52 1. Upewnij się, że checkbox ma unikalny identfikator. 2. GetDlgControlID jest niepotrzebne, bo identyfikator jest przesyłany jako LOWORD(wParam) komunikatu WM_COMMAND. 3. Masz uhwyt do checkboxa, więc możesz w ogóle zapomnieć o identyfikatorze i używać komunikatów BM_SETCHECK i BM_GETCHECK 4. Wreszcie, możesz użyć stylu BS_AUTOCHECKBOX wtedy checkbox sam będzie się zaznaczał po kliknięciu. |
|
kubek3898 Temat założony przez niniejszego użytkownika |
» 2013-07-29 13:30:41 Dziękuje! Zamiast pobierania ID za pomocą uchwytu, przypisałem sam unikalne ID + zastosowałem BS_AUTOCHECK. Wszystko pięknie działa, zamykam. |
|
« 1 » |