Domanda

Ciao a tutti ho un problema relativo all'uso del bitmap ha permesso di dialogo window.I hanno creato un layout di tipo di tastiera e mi auguro di ottenere l'input da tastiera also.When io uso il mouse sono in grado di ottenere il pulsante (s) pressate e anche tutti i pulsanti stanno lavorando bene - il DEFAULT,SELECTED,DISABLED altre immagini ..Tutto vengono caricati e lavoro da quando sto usando la funzione qui m_BtnBtn1Ctrl.LoadBitmaps, ma poi un tasto premuto sulla tastiera e il carattere corrispondente sullo schermo non è in grado di fare lo stesso come sono stato in grado di farlo con clic del mouse (e utilizzando la funzione Loadbitmaps()).

Sto usando queste 3 funzioni per ottenere lo stesso effetto di azione e che l'utilizzo di un mouse
LoadBitmap ()
SetBitmap ()
Invalidate ()

Ho provato anche questo pezzo di codice

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

e

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

, ma questi non sembrano dare l'effetto tasto premuto anche se internamente si work.Can qualcuno per favore mi aiuto con questo

Grazie e saluti Sayonee

Collapse

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);
}
È stato utile?

Soluzione

Per quanto ho capito, si ha una serie di pulsanti che simulano un layout di tastiera del computer. ogni volta che l'utente preme un tasto sulla tastiera, è necessario per simulare un clic del pulsante nella finestra di dialogo. Lei ha fornito bitmap per ogni stato di ciascun tasto.

Per fare questo, vorrei elaborare i messaggi WM_KEYDOWN e WM_KEYUP. Nei gestori, utilizzare alcuni mappatura della chiave per l'istanza del pulsante di vero e proprio. Quindi, inviare il BM_SETSTATE al controllo pulsante.

Poi, elaborare il messaggio WM_COMMAND da ciascuno dei pulsanti e controllare il codice BN_CLICKED.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top