【发布时间】:2013-08-22 21:09:45
【问题描述】:
我有一个用 c++/mfc42/visual studio 6 编写的自写 Windows 控件。该控件源自 CStatic 控件并响应 wm_lbuttondown/wm_lbuttonup。该控件被编译成一个dll。 dll 被动态加载到用 delphi 7 编写的应用程序中。到目前为止,一切正常/工作多年(在 win xp / vista / win 7 下)。
问题是:在 acer iconia w3-810 上的 Windows 8 下,当我通过触摸屏触摸控件时,控件不会收到 wm_lbuttondown / wm_lbuttonup 消息。 当您用鼠标单击控件时,一切正常,只有触摸不起作用。
另外:只有在 dll 中使用控件时才会发生这种情况。当我尝试使用独立版本的控件(不需要外部 dll 的 .exe 文件)时,当我触摸它时,控件确实会收到 wm_lbuttondown / wm_lbuttonup 消息。
当我在 Windows 7 触摸屏设备(一些联想)下尝试它时,它可以通过触摸正常工作!
另一个信息:当我在 win 8 下触摸控件时,我确实收到了其他未记录的消息,而不是 wm_lbuttondown / wm_lbuttonup...消息代码是(十进制)585、582、581、583 和 586...
有人知道是什么原因造成的吗?
【问题讨论】:
-
可能是 15 岁以上的 MFC。为什么不使用现代工具。
-
您的未记录消息有点接近 WM_TOUCH。我想不出任何可以推测的东西..
-
谢谢,我现在发现消息是WM_POINTERENTER, WM_POINTERDOWN, WM_POINTERUPDATE, WM_POINTERUP, WM_POINTERLEAVE
-
@user - 很好的发现。即使他们有名字,他们现在确实很undocumented。
标签: delphi dll windows-8 touch mouse