Question

Bonjour là, j'ai un problème lié à l'utilisation du bitmap activée Dialog window.I ont créé une mise en page de type de clavier et je souhaite obtenir l'entrée par le clavier also.When i utiliser la souris, je suis en mesure d'obtenir le bouton (s) enfoncée et aussi tous les boutons fonctionnent très bien - les autres images DEFAULT,SELECTED,DISABLED ..all se charger et de travail depuis que je suis en utilisant la fonction ici m_BtnBtn1Ctrl.LoadBitmaps, puis sur une touche enfoncée sur le clavier et le caractère correspondant à l'écran ne sont pas capable de faire la même chose que j'ai pu le faire avec cliquant de la souris (et en utilisant la fonction Loadbitmaps()).

J'utilise ces 3 fonctions pour obtenir la même action et effet que l'utilisation d'une souris
LoadBitmap ()
SetBitmap ()
Invalidate ()

J'ai aussi essayé ce morceau de code

HBITMAP hbm = (HBITMAP)LoadImage(NULL, "\\res\\Selected\\bitmap21.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

et

bitmap.Attach((HBITMAP)LoadImage(NULL, "\\res\\Selected\\bitmap21.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION));

mais ceux-ci ne semblent pas donner l'effet bouton emboutie bien en interne, ils work.Can quelqu'un aide-moi s'il vous plaît avec cette

Merci et salutations Sayonee

Réduire

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);
}
Était-ce utile?

La solution

Pour autant que je comprends, vous avez une série de boutons qui simulent une disposition de clavier d'ordinateur. chaque fois que l'utilisateur appuie sur une touche du clavier, vous devez simuler un bouton clic dans votre boîte de dialogue. Vous avez fourni bitmaps pour chaque état de chaque bouton.

Pour ce faire, je traiter les messages WM_KEYDOWN et WM_KEYUP. Dans les gestionnaires, utiliser une cartographie de la clé à l'instance de bouton réelle. Ensuite, envoyez le BM_SETSTATE au contrôle du bouton.

Ensuite, traiter le message de WM_COMMAND de chacun des boutons et vérifier le code BN_CLICKED.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top