Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI] Zaznaczanie Checkbox'a

Ostatnio zmodyfikowano 2013-07-29 13:30
Autor Wiadomość
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:

C/C++
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
P-88979
pekfos
» 2013-07-29 10:34:38
Ten kod w ogóle się wykonuje?
P-88980
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.
P-88981
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.
P-88985
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.
P-88987
« 1 »
  Strona 1 z 1