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

Sprawdzenie, czy checkbox jest zaznaczony

Ostatnio zmodyfikowano 2012-12-27 15:01
Autor Wiadomość
xevuel
» 2012-12-25 20:21:24
Po zakończeniu dialogu nie możesz już odczytać czy dany checkbox był zaznaczony czy nie. Jeśli chcesz jednak się o tym przekonać, uwzględnij to w wartości zwracanej.

» Kurs WinAPI, C++ » PodstawyOkna dialogowe, cz. 8 lekcja
P-71937
miadko
Temat założony przez niniejszego użytkownika
» 2012-12-27 14:00:51
A miałbym pytanie: chodzi o wartość zwracana w komendzie EndDialog, czy mam użyc funkcji SetWindowLongPtr i wpisać return?
P-72071
xevuel
» 2012-12-27 14:08:29
EndDialog.
P-72072
miadko
Temat założony przez niniejszego użytkownika
» 2012-12-27 15:01:07
Aaaa, skumałem :D
Zamiast EndDialog(hwNd,IDOK) zrobiłem warunek if-else, gdzie if zakończyłem pierwszą lepszą liczbą różną od identyfikatora kontrolki w moim oknie dialogowym EndDialog(hwNd,100), a else zakończyłem EndDialog(hwNd,101). Później wróciłem do funkcji LRESULT CALLBACK i po deklaracji ret zamiast if(ret==IDOK), wpisałem: if(ret==100) oraz else-if(ret==101), a nastepnie pod każdym "if"-em użyłem funkcji SetDlgItemText.

Skomplikowałem, wlączyłem... działa

xevuel, jestem ci naprawdę bardzo wdzięczny za naprowadzenie mnie do rozwiązania.

Może opis tego co zrobiłem jest słaby, mój kod po poprawkach to: (funckja LRESULT CALLBACK)
C/C++
LRESULT CALLBACK WndProc( HWND dlp, UINT mesg, WPARAM wParam, LPARAM lParam )
{
    switch( mesg )
    {
    case WM_COMMAND:
        {
            int ret = DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE( 750 ), dlp, DlgProc );
            if( ret == 100 )
            {
                SetDlgItemText( hwnd, ID_STATICBM, "Zaznacozno" );
            }
            else if( ret == 101 )
            {
                SetDlgItemText( hwnd, ID_STATICBM, "Nie zaznacozno" );
            }
        }
        break;
       
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
       
        default:
        return DefWindowProc( dlp, mesg, wParam, lParam );
    }
    return 0;
}
i w procedurze dialogowej:
C/C++
case IDOK:
{
    if( IsDlgButtonChecked( hwNd, ID_PTASZEK ) == BST_CHECKED )
         EndDialog( hwNd, 100 );
    else EndDialog( hwNd, 101 );
   
}
break;
Jeszcze raz dzięki wielkie
P-72077
1 « 2 »
Poprzednia strona Strona 2 z 2