Okno dialogowe cz.8 Przycisk o zmiennej nazwie
Ostatnio zmodyfikowano 2015-12-13 17:55
j23 |
» 2015-12-12 18:26:11 Bez kodu trudno coś sensownego napisać. |
|
robertt_2008 Temat założony przez niniejszego użytkownika |
» 2015-12-12 18:39:44 To jest ten kod z lekcji 8 o oknach dialogowych. Tylko trochę go skróciłem na własne potrzeby. W oknie dialogowym jest samo pole do wpisania loginu oraz dwa przyciski OK i Anuluj. Chce by ten tekst, który wpisze w pole loginu posłużył mi do nadania nazwy jakiemuś przyciskowi. case WM_COMMAND: { switch( LOWORD( wParam ) ) { case IDOK: { LOGINDIALOGRESULT * ldr = new LOGINDIALOGRESULT; ZeroMemory( ldr, sizeof( LOGINDIALOGRESULT ) ); HWND hLogin = GetDlgItem( hwnd, IDC_LOGIN ); DWORD dlugosc = GetWindowTextLength( hLogin ); ldr->lpszLogin = new char[ dlugosc + 1 ]; GetWindowText( hLogin, ldr->lpszLogin, dlugosc + 1 ); EndDialog( hwnd,( int ) ldr ); } break; case IDCANCEL: EndDialog( hwnd, 0 ); break; } } break; |
|
j23 |
» 2015-12-13 10:08:20 Kod wygląda OK... no może poza rzutowaniem wskaźnika na int. Powinno być: EndDialog( hwnd,( INT_PTR ) ldr ); Rzutując na INT_PTR masz pewność, że rzutujesz na typ, który ma taką samą wielkość jak wskaźnik. W trybie 64-bitowym int może być 32-bitowy. Wracając do problemu. Ustaw breakpointa na GetWindowText i zobacz, co zwraca ta funkcja. |
|
robertt_2008 Temat założony przez niniejszego użytkownika |
» 2015-12-13 10:45:04 W lpszlogin są jakieś krzaki "ÍÍÍÍÍÍÍýýýý««««««««ţîţîţ".
|
|
robertt_2008 Temat założony przez niniejszego użytkownika |
» 2015-12-13 11:02:46 Gdy ustawie breakpointa na EndDialog( hWnd,( INT_PTR ) ldr ); to ldr->lpszlogin jest 0; |
|
j23 |
» 2015-12-13 14:17:47 A jaką wartość ma dlugosc. |
|
robertt_2008 Temat założony przez niniejszego użytkownika |
» 2015-12-13 14:57:18 bez różnicy co wpisze w login, długość jest 6 . |
|
robertt_2008 Temat założony przez niniejszego użytkownika |
» 2015-12-13 17:55:46 Problem rozwiązany. Obsługę loginu umieściłem nie w tym miejscu co trzeba. Powinna być w procedurze obsługi okna dialogowego a nie w procedurze okna głównego tak jak do tej pory robiłem:P Mimo wszystko dziękuję koledze j23 za pomoc:) |
|
1 « 2 » |