über Tabstopps mit Enter Navigieren



  • Auf die Gefahr hin, dass es bereits irgendwo besprochen von mir aber nicht gefunden wurde, würde ich gern wissen, wie man über die Kontrollelemente mit einem Enter statt Tabulator navigieren kann.

    Google spuckt mir ganz viel dazu aus. Nichts was zur Fragestellung passt.


  • Mod

    Du hast wirklich gesucht? 🤡

    Ok: Überschreibe PreTranslateMessage und behandle dort WM_KEYDOWN mit VK_RETURN.
    Einfach dort NextDlgCtrl ausführen.

    Siehe auch:
    http://blog.m-ri.de/index.php/2008/09/21/die-return-taste-in-dialogen-eine-unendliche-geschichte/



  • Martin Richter schrieb:

    Du hast wirklich gesucht? 🤡

    War die Frage ironisch gemeint? 🙄

    Ja ich habe gesucht. Aber das was mir google ausspuckte hatte rein garnix damit zu tun.

    //
    Habe PreTranslateMessage() nun folgendermaßen überschrieben:

    BOOL Login::PreTranslateMessage(MSG *pMsg)
    {
    		if(pMsg->wParam == VK_RETURN)
    		{
    			NextDlgCtrl();					
    		}
    	return CDialog::PreTranslateMessage(pMsg);
    }
    

    Er geht auch auf das nachfolgende Element. Leider springt er danach jedoch auf den Button Abbrechen und danach direkt wieder in das Eingabefeld indem ich Enter drückte.

    //

    Ok richtig sollte es sein:

    BOOL Login::PreTranslateMessage(MSG *pMsg)
    {
    	if(pMsg->message == WM_KEYDOWN)
    	{
    		if(pMsg->wParam == VK_RETURN)
    		{
    			NextDlgCtrl();				
    		}
    	}
    	return CDialog::PreTranslateMessage(pMsg);
    }
    

    Ich bedank mich erstmal bei dir. 🙂


  • Mod

    Neee! Immer noch falsch. Wenn Du die Nachricht barbeitest solltest Du TRUE zurückgeben:

    BOOL Login::PreTranslateMessage(MSG *pMsg)
    {
        if(pMsg->message == WM_KEYDOWN)
        {
            if(pMsg->wParam == VK_RETURN)
            {
                NextDlgCtrl();
                return TRUE;                
            }
        }
        return CDialog::PreTranslateMessage(pMsg);
    }
    

Anmelden zum Antworten