Letzte gedrückte Taste ermitteln

sand13r

Erfahrenes Mitglied
Hallo liebe Freunde der Sonne,

ich hab mal wieder ein kleines Problemchen ^^ und zwar darf mein Programm keine ENTER und ESC Tasten eingaben bearbeiten weil sonst der Dialog geschlossen wird.

Wies jemand wie ich das am besten mache ?

Also ich komm ja dann in OnOk() bzw IDCancel rein und würd da dann nachschauen ob die letzte taste ein Enter oder ein ESC war und je nachdem dann abbrechen würde das gehen ?

oder kann man für Programme gewisse Tasten einfach sperren das wäre super


bin für alle Vorschläge und Tipps dankbar gruss sand13r
 

MCoder

Erfahrenes Mitglied
Wenn du bestimmte Zeichen komplett "abhängen" willst, kannst du dass in PreTranslateMessage() machen.
Hier ein Beispiel für ESC und RETURN:
C++:
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg) 
{
    if( pMsg->message == WM_KEYDOWN )
    {
        if( pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN )
        {
            return TRUE;
        }
    }
    
    return CDialog::PreTranslateMessage(pMsg);
}
Gruß
MCoder
 

sand13r

Erfahrenes Mitglied
Asche auf mein hauot habs dann doch dank eines Threads heir im Forum einen Hinweis auf die Funktion PreTranslateMessage gefunden und google hat mir dann die perfekte Lösung geboten^^



Hier für alle klick faulen ^^
Code:
    BOOL DialogName::PreTranslateMessage(MSG* pMsg)
     {
          // TODO: Add your specialized code here and/or call the base class
          if(pMsg->message==WM_KEYDOWN)
          {
              if(pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE)
                  pMsg->wParam=NULL ;
          }

          return 0; //CDialog::PreTranslateMessage(pMsg);
       }


greetz sand13r

EDIT: ah MCoder war schneller ^^ wieder einmal ein riesen dankeschön^^
 
Zuletzt bearbeitet:

sand13r

Erfahrenes Mitglied
Wenn du bestimmte Zeichen komplett "abhängen" willst, kannst du dass in PreTranslateMessage() machen.
Hier ein Beispiel für ESC und RETURN:
C++:
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg) 
{
    if( pMsg->message == WM_KEYDOWN )
    {
        if( pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN )
        {
            return TRUE;
        }
    }
    
    return CDialog::PreTranslateMessage(pMsg);
}
Gruß
MCoder



du bist einfach der beste ^^ dankeschön ^^


eDIT: Ah sorry for doppelpost..
 
Zuletzt bearbeitet: