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ücktabfangen 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