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

Okno dialogowe cz.8 Przycisk o zmiennej nazwie

Ostatnio zmodyfikowano 2015-12-13 17:55
Autor Wiadomość
j23
» 2015-12-12 18:26:11
Bez kodu trudno coś sensownego napisać.
P-141830
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;
P-141832
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.
P-141868
robertt_2008
Temat założony przez niniejszego użytkownika
» 2015-12-13 10:45:04
W lpszlogin są jakieś krzaki "ÍÍÍÍÍÍÍýýýý««««««««ţîţîţ".
P-141870
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;
P-141872
j23
» 2015-12-13 14:17:47
A jaką wartość ma dlugosc.
P-141889
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 .
P-141892
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:)
P-141902
1 « 2 »
Poprzednia strona Strona 2 z 2