Focusproblem bei Eingabe in Editboxen



  • Hallo Leute!

    Ich habe ein kleines Problem.

    Ich möchte sowas wie eine Nutzer Passworteingabe machen. Wenn ich auf den Button "Einloggen" klicke mit der MAus, läuft alles super. Wenn der Nutzer allerdings <Enter> hämmert geht das nicht, weil dann die auf dem Button liegende Klickmessage nicht verwendet wird.

    Ich habe versuch in BN_ONCHANGE den FGokus zu ändern, geht nich, denn dann ist jede Einagbe nur ein Zeichen lang und der Focus ist danach auf dem Button.

    Meine Idee wäre noch, die OnCancel() oder OnOK() zu überladenb und den Check auf Richtigkeit der Eingaben da reinzubasteln.
    Geht das?

    Schonmal Dank

    Ranger



  • Nenne den Button IDOK und pack den Kram in OnOK und schon funktioniert es. 🙂



  • Glasgow_Ranger schrieb:

    Ich möchte ....

    Dein Wunsch ich mir angenommen.

    Mittels 'PreTranslateMessage' kannst du die 'Enter' Taste abfangen. Dann suchst du nach dem Element mit dem aktuellen Fokus und ruftst dann die Methode auf, welche ausgeführt werden soll.

    Beispiel:

    BOOL CDlg_MyClass::PreTranslateMessage(MSG* pMsg){
    
      // the 'RETURN' key has been performed
      if ((pMsg->message == WM_KEYDOWN ) && (pMsg->wParam == VK_RETURN)){
    
        // get current focus-object
        CWnd* w = NULL;
        w = GetFocus();
        if(w==NULL) return FALSE;
    
        // is it the edit field?
        int iId = w->GetDlgCtrlID();
        if( iId == IDC_EDIT_VAL){
          //call function
          foo();
        }
      }
      return CDialog::PreTranslateMessage(pMsg);
    }
    

    Analog kannst du das machen, wenn jemand auf 'ESC' oder andere Tasten haut.

    Viel Glück!



  • Danke Euch beiden für die Antworten, ich hab es so ähnlich gemacht wie in Antwort 1, ich hab die OnOK() Funktion überladen.

    Danke Euch beiden.


Anmelden zum Antworten