【问题标题】:missing wm_lbuttondown under windows 8 touchscreenWindows 8 触摸屏下缺少 wm_lbuttondown
【发布时间】: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


【解决方案1】:

我发现了问题。 DLL 控件的 Delphi 包装代码正在为 DLL 控件设置另一个 WndProc,在这个新的 WndProc 中调用了导致 Windows 8/触摸屏下的问题的 DefWindowProc。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2020-02-05
    • 2013-08-10
    相关资源
    最近更新 更多