c++ - 了解哪款显示器在 Windows 10 上具有触摸功能

标签 c++ winapi touch multiple-monitors

我有一个在 Windows 10 上运行的双显示器设置,我的辅助显示器是触摸屏。我可以使用 EnumDisplayMonitors 检测两个显示器,并发现存在一个使用 GetSystemMetrics(SM_DIGITIZER) 的数字化仪。我希望在触摸显示器上打开我的应用程序窗口,但我找不到任何功能来告诉我数字化仪“属于”哪个显示器。

在没有解决方案的情况下,我想我可以有一个启动序列,在此期间要求用户点击触摸屏,然后我的代码可以将窗口移动到相应的监视器。我只是希望它比那更光滑。

有什么想法吗?

最佳答案

GetPointerDevices function给你这些信息。 POINTER_DEVICE_INFO在同一结构中包含监视器句柄和设备指针类型:

typedef struct tagPOINTER_DEVICE_INFO {
  DWORD               displayOrientation;
  HANDLE              device;
  POINTER_DEVICE_TYPE pointerDeviceType; // can be POINTER_DEVICE_TYPE_TOUCH see below
  HMONITOR            monitor; // Monitor handle
  ULONG               startingCursorId;
  USHORT              maxActiveContacts;
  WCHAR               productString[POINTER_DEVICE_PRODUCT_STRING_MAX];
} POINTER_DEVICE_INFO;

typedef enum tagPOINTER_DEVICE_TYPE {
  POINTER_DEVICE_TYPE_INTEGRATED_PEN,
  POINTER_DEVICE_TYPE_EXTERNAL_PEN,
  POINTER_DEVICE_TYPE_TOUCH,
  POINTER_DEVICE_TYPE_TOUCH_PAD,
  POINTER_DEVICE_TYPE_MAX
} POINTER_DEVICE_TYPE;

关于c++ - 了解哪款显示器在 Windows 10 上具有触摸功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65500736/

相关文章:

c++ - 更改 QTreeWidget 的选择

c++ - 在另一个进程完成后如何删除文件?

ios - 检测 Xcode 中某个对象的触摸

android - 如何以编程方式触发android中的触摸事件?

ios - iOS 中如何让剪切 View 接收触摸事件?

c++ - 可移植线程 API

c++ - gcc 在这个概念定义中错误地评估了 std::declval 吗?

c - 命名管道消息损坏 (Win32,C)

c++ - C++ WDK STL 是否支持 wchar_t?我得到未解析的外部符号的 :(

c# - Windows 资源管理器中文件夹或文件的坐标