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);
}
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top