Sprawdzenie, czy checkbox jest zaznaczony
Ostatnio zmodyfikowano 2012-12-27 15:01
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. Okna dialogowe, cz. 8 |
|
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? |
|
xevuel |
» 2012-12-27 14:08:29 EndDialog. |
|
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) 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: case IDOK: { if( IsDlgButtonChecked( hwNd, ID_PTASZEK ) == BST_CHECKED ) EndDialog( hwNd, 100 ); else EndDialog( hwNd, 101 ); } break;
Jeszcze raz dzięki wielkie |
|
1 « 2 » |