如何判断显示器是否是触摸屏

lovecjj19910205 2014-11-27 03:36:24
如果显卡上接了四个显示器,其中有一个是触摸屏,我怎么才能判断显示器是否支持触摸。
...全文
1216 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sandrer 2014-11-28
  • 打赏
  • 举报
回复
引用 7 楼 lovecjj19910205 的回复:
[quote=引用 6 楼 Sandrer 的回复:] 开发包里有详细的英语文档解释了该模块如何使用的了,我只能帮你到这了,剩下的自己努力
先谢过了,我这里不需要处理消息的转化,只希望能判断这个屏是否是触摸屏[/quote] 那你点它一下不就知道是不是触摸屏了,还用那么复杂吗
笨笨仔 2014-11-28
  • 打赏
  • 举报
回复
引用 7 楼 lovecjj19910205 的回复:
[quote=引用 6 楼 Sandrer 的回复:] 开发包里有详细的英语文档解释了该模块如何使用的了,我只能帮你到这了,剩下的自己努力
先谢过了,我这里不需要处理消息的转化,只希望能判断这个屏是否是触摸屏[/quote] 显示器只有一个显示数据输出接口,如VGA接口,而触摸屏有一个专门的输出接口,估计应该是USB的,看一下应该就能分别了。
lovecjj19910205 2014-11-28
  • 打赏
  • 举报
回复
引用 6 楼 Sandrer 的回复:
开发包里有详细的英语文档解释了该模块如何使用的了,我只能帮你到这了,剩下的自己努力
先谢过了,我这里不需要处理消息的转化,只希望能判断这个屏是否是触摸屏
Sandrer 2014-11-27
  • 打赏
  • 举报
回复
开发包里有详细的英语文档解释了该模块如何使用的了,我只能帮你到这了,剩下的自己努力
Sandrer 2014-11-27
  • 打赏
  • 举报
回复
还有一点,当你调用了 RegisterTPNotifyMessage 后 你再点触摸屏后是不会有任何动作的,因为触摸动作已经被你的程序“吃”掉了 所以触摸信息于鼠标操作中间的转换要由你自己来完成
Sandrer 2014-11-27
  • 打赏
  • 举报
回复
安装 eGalaxTouch 的触摸屏驱动程序,这是公板驱动,哪个厂家都能用 正常情况下触摸屏幕的时候,触摸信息会由驱动来转换成鼠标信息直接作用到屏幕上 不过该驱动里头有个二次开发包,里面有个函数 RegisterTPNotifyMessage 函数 可以把触摸消息不经过转换而直接以消息的模式发到你注册的窗体中 消息中的 wParam 包含有触摸的简单信息,lParam 包含坐标点 他的消息于正常的鼠标点击消息是不一样的 触摸时候接收到的 message 为 你调用 RegisterTPNotifyMessage 时所传递的自定义消息值 你可以在程序运行前,调用 EnumDisplayMonitors 来获得所有显示器的信息(最主要的还是该显示器的矩形范围) 然后在接收到触摸信息后,与所有显示器的矩形进行一个 PtInRect 的调用来判断在哪个屏幕上发生触摸 RegisterTPNotifyMessage DWORD WINAPI RegisterTPNotifyMessage( HANDLE hFile, HWND hWnd, UINT imsg ); RegisterTPNotifyMessage registers a notification message for touch event so that the window can receive the message whenever touch event happens. Parameters hFile Device handle obtained by CreateDevice hWnd Target window to receive the caller defined message when touch event happened. imsg Caller defined message. Remark The Target window will receive the caller defined message whenever the touchscreen was touched. With this caller defined message, wParam is the touch proximity state, LOWORD( lParam) is X coordination, and HIWORD(lParam) is Y coordination. The coordination data is always scaled to 0~65535 for the driver before version 5.0.1.5310. When working with driver version 5.0.1.5310 or later, the coordination data is not scaled. Instead, the value range depends on the AD resolution shown in wParam. The window can receive the caller defined message only when the device thread was started with StartDeviceThread. Driver, version 5.0.1.5310 or later, supports multiple ADC resolution, multi-user, pressure. Such information can be obtained in wParam wParam is a 32 bits data described as below B31 B24 B23 B16 Player ID pressure B15~B8 0 Z M 0 0 AD1 AD0 Status Z = 1, B16~B23 is 8 bits pressure information M= 1, B24~B31 is 8 bits multi-user player ID AD1:AD0 = resolution of the coordination data. AD1:AD0 = 0:0 11 bits resolution AD1:AD0 = 0:1 12 bits resolution AD1:AD0 = 1:0 13 bits resolution AD1:AD0 = 1:1 14 bits resolution See Also RegisterDeviceRemovalHook
lovecjj19910205 2014-11-27
  • 打赏
  • 举报
回复
顶一个 顶
lovecjj19910205 2014-11-27
  • 打赏
  • 举报
回复
引用 1 楼 happyparrot 的回复:
这也能判断出来吗?好像显示器的尺寸都判断不出来吧
显示器尺寸可以读EDID获取
快乐鹦鹉 2014-11-27
  • 打赏
  • 举报
回复
这也能判断出来吗?好像显示器的尺寸都判断不出来吧

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧