在 Windows 10 上发现哪个显示器具有触摸功能

Discover which monitor has touch capabilities on Windows 10

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

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

有什么想法吗?

GetPointerDevices function give you that information. 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;