2009-04-17 13 views
5

¿Cómo verifico si el usuario hizo clic con el mouse o con un lápiz óptico en un control C#?Al desarrollar para una tableta, ¿cómo puedo determinar si el usuario hizo clic con el mouse o la pluma?

Por ej. Si el usuario hace clic en un cuadro de texto con un botón de lápiz, entonces quiero que aparezca un panel de entrada, pero si hace clic con el mouse, no debería. Entonces, ¿cómo puedo verificar si estaba usando un mouse o un bolígrafo?

Editar: Uso no Windows Forms WPF

Respuesta

6

Escribí un artículo para MSDN que nunca se publicó, supongo que porque el desarrollo de Tablet PC se desvaneció cuando se lo obtuve. Pero describió cómo hacer esto. Para resumir, querrás la API GetMessageExtraInfo. He aquí las definiciones:

// [DllImport("user32.dll")] 
// private static extern uint GetMessageExtraInfo(); 

uint extra = GetMessageExtraInfo(); 
bool isPen = ((extra & 0xFFFFFF00) == 0xFF515700); 

email yo en mi primer nombre en Einstein tecnología punto net si desea que le envíe el artículo.

+0

¡Gracias! Funciona como un encanto –

+0

encontró un enlace a un artículo de MSDN que explica por qué lo anterior funciona, junto con otra información. http: // msdn .microsoft.com/es-us/library/ms703320.aspx –

-1

Realmente no sé mucho de esto, pero supongo que si alguien está usando un lápiz, entonces el MouseEnter, mouseExit (o lo que es el equivalente) los eventos nunca se dispararán. Si uno es despedido, entonces sabe que está usando un mouse.

+0

Esos eventos aún se disparan, actúa como un movimiento muy rápido del mouse. –

0

Si está utilizando WPF, hay una gran cantidad de eventos Stylus. P.ej. UIElement.StylusDown.

This tiene más detalles sobre cómo interactúan el lápiz y los eventos del mouse.

Si no está usando WPF, ¿por qué no? : p

+0

Lamentablemente estoy usando Windows Form :(Cualquier sugerencia para eso? –

Cuestiones relacionadas