Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Problem mit Enter bei dialogfeld

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.09.2003, 15:10 Uhr
Uli



Grüße,

ich habe so ein Problem wie im FAQ schon beschrieben. Es geht darum das ich beim start meiner Dialoganwendung gleich einen Dialog aufrufe der zum login verwendet wird. Im Dialogfeld befinden sich drei Button ( IDC_Login,IDC_ChangeKennwort,IDCANCEL) Solange ich die eingabe über die Button mache ist alles ok. So bald ich aber denn Cursor auf keinem dieser Button habe und die Enter-Taste betätige wird der Dialog verständlicher weise beendet ohne denn sinn zu erfüllen.
Ich muß erreichen das beim betätigen der Entertaste die funktion für das Button wie der Cursor ist ausgeführt wird bzw. wenn kein Button den Cursor besitzt keine ausgeführt wird oder die vom IDC_Login.

C++:
void CLoginDlg::OnLogin()
{
UpdateData(TRUE);
    MessageBox(m_strKennwort);
    switch(m_iBenutzer)
    {
        //Benutzer = Produktion
        case 0:
        {
            OnOK();
        }break;
        //Benutzer = Service
        case 1:
        {
            // Kennwort richtig
            if( m_strKennwort.Compare(strPSWServ)==0)
            {
                OnOK();
            }
            // Kennwort falsch
            else
            {
                MessageBox("Fehler. Kennwort ist falsch.","ERROR",MB_ICONERROR);
                m_strKennwort="";
                UpdateData(FALSE);
            }
        }    break;
        case 2:
        {
            // Kennwort richtig
            if( m_strKennwort.Compare(strPSWAdmi)==0)
            {
                OnOK();
            }
            // Kennwort falsch
            else
                {
                MessageBox("Fehler. Kennwort ist falsch.","ERROR",MB_ICONERROR);
                m_strKennwort="";
                UpdateData(FALSE);
            }
        }break;
        default:
        {
            m_iBenutzer=0;
            OnOK();
        }break;
    }
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.09.2003, 15:25 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


dann solltest du OnOK überschreiben
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.09.2003, 15:35 Uhr
Uli



Ich hatte auch schon versucht das ganze in die OnOK() funktion zu packen. Nur wenn die Bedingungen zum beenden des Dialoges nicht erfüllt waren brach er trotz dem ab. Da würde es nützlich sein die OnOK() funktion vorzeitig abzubrechen und wieder auf eine neue eingabe zu warten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.09.2003, 15:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ach so du hast die Mehtode schon
kommentiere mal das CDialog:OnOK(); aus
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.09.2003, 15:40 Uhr
Uli



Wenn ich das mache Beendet der mir ja denn Dialog auch nicht mehr wenn ich auf IDC_Login gehe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.09.2003, 15:47 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Das ist in der Tat ein Problem

Wie startest du denn den Logindialg? Modal
Wenn ja benutze doch einfach Enddialog um den Login zu beenden
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.09.2003, 15:55 Uhr
Uli



mit

C++:
fi(LoginDlg.DoModal() == IDC_Login)

EndDialog müsste ich in der Hauptanwendung einsetzen. dort komme ich ja garnicht erst wieder hin wenn ich OnOK() verändere. Und wenn ich OnOK() nicht verändere bleibt das alte Problem.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.09.2003, 16:02 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ALso ich mach das immer so
Ich starte den Dialog zu dem der User kommen soll bzw. meist ist das ja der beim Programmstart.

Dann rufe ich gleich bei OnPaint() den LoginDialog modal auf oder in OnInitDialog
Wenn du es in OnPaint machst brauchst du noch ein Flag damit er das nur beim ersten mal macht, wenn du es in OnInitDialog machst, malt der erst den Dialog nachdem du den LoginDIalog beendet hast. Ist also ne Geschmaksfrage

Wenn der User sich "valide einloggt", dann wird der LoginDIalog zb. mit 1 beendet wenn nicht mit 0. Wenn der LoginDialog mit 0 bendet wird, schliesse ich dann einfach den anderen Dialog gleich mit.

Oder was passt dir daran nicht?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.09.2003, 08:13 Uhr
Uli



Grüße.
Habe das PRoblem mit einer schleife lösen können. ist zwar nicht mehr ganz so schön wie meine 1. Idee aber dafür geht es jetzt.

Dank dir.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: