Come raggiungere il pulsante effetto di tipo utilizzando le bitmap
-
01-10-2019 - |
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);
}
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
.