When developing for a tablet PC, how do I determine if the user clicked a mouse or a pen?

拈花ヽ惹草 提交于 2019-12-18 17:25:44

问题


How do I check if the user clicked with a mouse or with a pen stylus on a C# control.

For eg. If the user clicks a text box with a pen button then I want an input panel to pop up but if he clicks with a mouse then it shouldn't. So how do I check whether he was using a mouse or a pen?

Edit: Using Windows Forms not WPF


回答1:


I wrote an article for MSDN that never got published, I guess because Tablet PC development fizzled out by the time I got it to them. But it described how to do this. Long story short, you'll want the GetMessageExtraInfo API. Here's the definitions:

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

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

Email me at my first name at Einstein Tech dot net if you want me to send you the article.




回答2:


If you're using WPF then there's a whole host of Stylus events. E.g. UIElement.StylusDown.

This has more details about how stylus and mouse events interact.

If you're not using WPF, why not? :p




回答3:


I don't really know too much about this, but I'd guess that if someone is using a stylus, then the mouseEnter, mouseExit (or whatever the equivalent is) events won't ever fire. If one does get fired, then you know that they're using a mouse.



来源:https://stackoverflow.com/questions/758782/when-developing-for-a-tablet-pc-how-do-i-determine-if-the-user-clicked-a-mouse

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!