Wie erreichen Bitmaps Taster Typ Effekt mit
-
01-10-2019 - |
Frage
Hallo zusammen ich habe eine Frage zu der Verwendung des Bitmap bezogenen Dialog window.I aktiviert eine Tastatur Typ Layout erstellt haben, und ich möchte die Eingabe über die Tastatur bekommen also.When i mit der Maus: Ich kann den Knopf erhalten (e) gedrückt und alle auch die Tasten funktionieren gut - die anderen Bilder DEFAULT,SELECTED,DISABLED
..alle geladen und die Arbeit, da ich die Funktion hier m_BtnBtn1Ctrl.LoadBitmaps
verwenden, aber dann ein beliebige Taste gedrückt auf der Tastatur und die entsprechenden Zeichen auf dem Bildschirm ist nicht Lage, das gleiche zu tun, wie ich es in der Lage bin zu tun, mit der Maus klicken (und die Loadbitmaps()
Funktion).
Ich verwende diese 3 Funktionen die gleiche Funktion und Wirkung zu erzielen wie eine Maus
mit
Loadbitmap ()
SetBitmap ()
Invalidate ()
Ich habe auch versucht, dieses Stück Code
HBITMAP hbm = (HBITMAP)LoadImage(NULL, "\\res\\Selected\\bitmap21.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
und
bitmap.Attach((HBITMAP)LoadImage(NULL, "\\res\\Selected\\bitmap21.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION));
aber diese scheinen nicht der gedrückte Taste Wirkung zu geben, obwohl sie intern work.Can jemand bitte helfen Sie mir mit diesem
Danke und Gruß Sayonee
Schließen
BOOL KeyBoard_press::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
CString strTemp;
if (pMsg->message == WM_KEYDOWN)
{
if ( pMsg->wParam == 0x41 || pMsg->wParam == 0x61) //check for both 'a' and 'A'
OnBtnBtn1();
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_DELETE ||
pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_TAB ||
pMsg->wParam == VK_UP || pMsg->wParam == VK_DOWN || GetKeyState (VK_CONTROL))
{
::TranslateMessage (pMsg);
::DispatchMessage (pMsg);
return TRUE; // DO NOT process further
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Lösung
Soweit ich verstehe, haben Sie eine Reihe von Schaltflächen, die ein Computer-Tastatur-Layout simulieren. wenn der Benutzer eine Taste auf der Tastatur drückt, müssen Sie auf eine Schaltfläche klicken im Dialogfeld simulieren. Sie haben Bitmaps für jeden Zustand der einzelnen Tasten zur Verfügung gestellt.
Um dies zu tun, würde ich die WM_KEYDOWN
und WM_KEYUP
Nachrichten verarbeiten. In den Handler, eine Abbildung der Schlüssel zur tatsächlichen Schaltfläche Instanz verwenden. Dann senden die BM_SETSTATE
auf die Tasten-Steuerung.
Dann verarbeiten die WM_COMMAND
Nachricht von jedem der Taste und prüfen, ob der BN_CLICKED
Code.