Pregunta

Hola Tengo un problema relacionado con el uso del mapa de bits habilitado diálogo window.I han creado un diseño de tipo de teclado y deseo conseguir la entrada a través del teclado also.When i utilizar el ratón soy capaz de conseguir el botón (s) prensan y también a todos los botones están trabajando muy bien - las otras imágenes DEFAULT,SELECTED,DISABLED .all se cargan y el trabajo desde que estoy usando la función aquí m_BtnBtn1Ctrl.LoadBitmaps, pero luego al presionar cualquier tecla en el teclado y el carácter correspondiente en la pantalla no es capaz de hacer lo mismo que he sido capaz de hacerlo con clic del ratón (y usando la función Loadbitmaps()).

Estoy usando estas 3 funciones para lograr la misma acción y efecto que el uso de un ratón
LoadBitmap ()
SetBitmap ()
Invalidar ()

También probé este trozo de código

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

y

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

pero estos no parecen dar el efecto botón presionado, aunque internamente work.Can alguien me ayuda por favor con este

Gracias y saludos Sayonee

Cerrar

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);
}
¿Fue útil?

Solución

Por lo que yo entiendo, que tiene una serie de botones que simulan un diseño de teclado del ordenador. cada vez que el usuario pulsa una tecla del teclado, lo que necesita para simular un clic de botón en su cuadro de diálogo. Usted ha proporcionado mapas de bits para cada estado de cada botón.

Para hacer esto, sería procesar los mensajes WM_KEYDOWN y WM_KEYUP. En los manipuladores, utilizar algunos de asignación de la clave para la instancia de botón real. A continuación, enviar el BM_SETSTATE para el control de botón.

A continuación, procesar el mensaje WM_COMMAND de cada uno de los botones y comprobar si el código BN_CLICKED.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top