Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ WM_POINTERDOWN和WM_LBUTTONDOWN的坐标不同_C++_Windows_Winapi_Coordinates - Fatal编程技术网

C++ WM_POINTERDOWN和WM_LBUTTONDOWN的坐标不同

C++ WM_POINTERDOWN和WM_LBUTTONDOWN的坐标不同,c++,windows,winapi,coordinates,C++,Windows,Winapi,Coordinates,我发现Windows 10应用程序存在一个问题,即WM_LBUTTONDOWN/WM_LBUTTONUP和WM_POINTERDOWN/WM_POINTERUP的标准Windows消息处理程序返回的X和Y坐标不同 我希望它们是相同的(+/-几个像素的触摸误差),但我始终看到从WM_POINTERDOWN/WM_POINTERUP到X轴和Y轴的偏移量分别为+50px和+65px。我的触摸屏分辨率为1920像素乘以1080像素。我添加了debug来报告返回的X和Y坐标 如果我在同事的触摸屏笔记本电脑

我发现Windows 10应用程序存在一个问题,即WM_LBUTTONDOWN/WM_LBUTTONUP和WM_POINTERDOWN/WM_POINTERUP的标准Windows消息处理程序返回的X和Y坐标不同

我希望它们是相同的(+/-几个像素的触摸误差),但我始终看到从WM_POINTERDOWN/WM_POINTERUP到X轴和Y轴的偏移量分别为+50px和+65px。我的触摸屏分辨率为1920像素乘以1080像素。我添加了debug来报告返回的X和Y坐标

如果我在同事的触摸屏笔记本电脑上以两倍的分辨率(3840px乘以2160px)运行我的应用程序,他的机器将显示WM_LBUTTONDOWN和WM_POINTERDOWN返回的X&Y之间的偏移量,分别为+100px和+130px。因此,这些偏移似乎与分辨率有关(即,我的值加倍)

有人知道为什么WM_LBUTTONDOWN和WM_POINTERDOWN或WM_LBUTTONUP&WM_POINTERUP返回的X&Y坐标会不同吗?如果是这样,那么这个偏移量是从哪里来的呢

我已将显示设置中的“更改文本、应用程序和其他项目的大小”从“125%(建议)”重置为“100%”,但没有效果


任何建议都将不胜感激。

今天取得了突破

WM良POINTERDOWN和WM_UPointerup返回的X和Y坐标似乎是整个触摸屏的绝对坐标。而WM_LBUTTONDOWN和WM_LBUTTONUP返回的坐标是相对于我的应用程序的ClientWindow的


因此,我不得不添加一些计算来减去应用程序的左侧和顶部位置(以及任何标题栏和菜单栏)根据WM_POINTERDOWN和WM_POINTERUP返回的X和Y坐标,我建议在这个问题上添加
winapi
标记和编程语言标记,如
c++
c#
,因为这将有助于你的问题被看到。请注意,Win32 API中已经存在“一些计算”,请参阅
ScreenToClient
MapWindowPoints
函数。你不必自己搞乱标题栏和菜单栏的大小。