VK_TAB und VK_SHIFT kombinieren



  • Hi,

    In meiner Anwendung (PocketPC) möchte ich gerne die VK´s TAB und SHIFT auf einen Tastendruck verbinden! Und zwar möchte ich diese bei Aufruf der VK´s Up und Down handeln, bei Down (VK_DOWN) soll der Focus ins nachstehende Editfeld hopsen (funktioniert einwandfrei), jedoch bei Up (VK_UP) soll der Focus in das vorige Edit hopsen! Gibt es eine Möglichkeit VK_SHIFT und VK_TAB zu kombinieren?

    BOOL COffeneAnfragenAdresse::PreTranslateMessage(MSG* pMsg) 
    {
        if (pMsg->message == WM_KEYDOWN)
        {
             if (pMsg->wParam == VK_DOWN)
                   pMsg->wParam = VK_TAB;   // Klappt super
    
             if (pMsg->wParam == VK_UP)
             {
                      pMsg->wParam = VK_SHIFT; // Klappt leider nicht :-(
                      pMsg->wParam = VK_TAB;
             }
        }
        return CDialog::PreTranslateMessage(pMsg);
    }
    

    Ich hoffe einer von euch hat ein guten Tip für mich!

    thx Sven



  • Ich weis zwar nicht genau was du machst, aber:

    pMsg->wParam = VK_SHIFT;
    pMsg->wParam = VK_TAB;
    

    Hier schreibst du zuerst in wParam den Wert VK_SHIFT, den du in der nächsten Zeile wieder überschreibst, will heissen am Schluss ist wParam == VK_TAB.
    Soviel ich verstanden habe, willst du shift+tab abfangen, was du anders angehen musst, etwa so:

    if(pMsg->wParam == VK_TAB && GetKeyState(VK_SHIFT) > 0)
    //tab und shift gedrückt
    


  • if (pMsg->wParam == VK_UP)
    {
    pMsg->wParam = VK_SHIFT; // Klappt leider nicht 😞
    pMsg->wParam = VK_TAB;
    }

    Okay das hier ist schon quatsch! 😃 (war der erste Versuch 😉 )

    Soviel ich verstanden habe, willst du shift+tab abfangen, was du anders angehen musst, etwa so:
    if(pMsg->wParam == VK_TAB && GetKeyState(VK_SHIFT) > 0)
    //tab und shift gedrückt

    abfangen will ich diese beiden Tastatureingaben nicht, sondern ich will wenn die Tastatureingabe gleich VK_UP ist möchte ich 2 Tastatureingaben (VK_SHIFT und VK_TAB) durchführen.
    Wie kann man aus dieser einen getätigten Tastatureingabe zwei machen?
    Gibt es irgendeine Möglichkeit anstatt einer Tastatureingabe zwei in Tastaturpuffer zu laden?

    sven



  • Habe die Lösung gefunden!

    Ich wollte halt nur wenn die Taste VK_UP betätigt wird, dass sich der Focus des Editfeldes in das vorige Feld bewegt.
    Daher kam die Idee die Tasen VK_SHIFT und VK_TAB zu kombinieren!
    Aber es gibt eine eleganterer Lösung!

    BOOL CTageskarte::PreTranslateMessage(MSG* pMsg) 
    {
        if (pMsg->message == WM_KEYDOWN)
        {
             if (pMsg->wParam == VK_DOWN)
             {
                   NextDlgCtrl();
             }
             if (pMsg->wParam == VK_UP)
             {
                   PrevDlgCtrl();
             }
       }	
       return CDialog::PreTranslateMessage(pMsg);
    }
    

    Manchmal ist die Lösung so nah ... ... ... 😃

    Sven


Anmelden zum Antworten