C/Visual C - 3 boton

 
Vista:

3 boton

Publicado por Alex (6 intervenciones) el 14/05/2001 19:05:41
Me encuentro programando con Visual C++, en Windows NT/2000, el problema es que me es imposible capturar el click del tercer boton, (WM_MBUTTONDOWN), no se si es porque el raton no esta configurado para hacer uso de el o que, pero no he encontrado en niingun sitio como configurarlo, (no dispongo de drivers especiales para mi raton):

Ademas, por lo menos en Linux, existe la posibilidad de emular el tercer boton pulsando los otros dos a la vez, ¿existe algo de este tipo en Windows?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Capturando el evento de clic del tercer botón del ratón (WM_MBUTTONDOWN) en Windows NT/2000

Publicado por Alejandro (913 intervenciones) el 24/09/2024 23:43:46
Tocayo, lamentablemente, en Windows NT/2000, no es posible capturar el evento de clic del tercer botón del ratón (WM_MBUTTONDOWN) de forma nativa sin el uso de controladores especiales o configuraciones adicionales. Esto se debe a que el sistema operativo no proporciona soporte directo para este evento en esas versiones de Windows.

En cuanto a la posibilidad de emular el tercer botón del ratón pulsando los otros dos a la vez, en Windows no existe una funcionalidad nativa para hacer esto. Sin embargo, puedes implementar tu propia lógica para emular este comportamiento. Por ejemplo, puedes capturar los eventos de clic de los botones izquierdo y derecho del ratón y, si ambos se presionan al mismo tiempo, interpretarlo como un clic del tercer botón.

Aquí hay un ejemplo básico de cómo podrías implementar esto en Visual C++:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <Windows.h>
 
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
        case WM_LBUTTONDOWN:
            if (GetAsyncKeyState(VK_RBUTTON) & 0x8000) {
                // Ambos botones izquierdo y derecho están presionados
                // Realizar acción para emular el clic del tercer botón
            }
            break;
        case WM_RBUTTONDOWN:
            if (GetAsyncKeyState(VK_LBUTTON) & 0x8000) {
                // Ambos botones izquierdo y derecho están presionados
                // Realizar acción para emular el clic del tercer botón
            }
            break;
        // Otros casos de mensajes...
    }
 
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    // Crear y registrar la ventana
    // ...
 
    // Bucle de mensajes
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return 0;
}

En este ejemplo, se utiliza la función `GetAsyncKeyState` para verificar si los botones izquierdo y derecho del ratón están presionados al mismo tiempo. Si ambos están presionados, puedes realizar la acción deseada para emular el clic del tercer botón.

Recuerda que esta es solo una implementación básica y puede requerir ajustes adicionales según tus necesidades específicas.

Espero que esta solución te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar