【发布时间】:2010-11-11 03:30:54
【问题描述】:
我有一个 WPF 应用程序,其用户控件包含 HwndHost。 HwndHost 的创建方式如下:
hwndHost = CreateWindowEx(0, "static", "",
WS_CHILD | WS_VISIBLE,
0, 0,
hostHeight, hostWidth,
hwndParent.Handle,
(IntPtr)HOST_ID,
IntPtr.Zero,
0);
hwndControl = CreateWindowEx(0, "Static", "",
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN
,
0, 0,
hostHeight, hostWidth,
hwndHost,
(IntPtr)PICTUREBOX_ID,
IntPtr.Zero,
0);
然后我使用 HwndSourceHook 连接到消息泵,大量消息通过。
除了我想要的 WM_MOUSEMOVE、WM_MOUSEHOVER、WM_LBUTTONDOWN 和 WM_LBUTTONUP
此外,在主窗口或控件上的 WPF 代码中不会触发 OnMouseLeftButtonDown 事件,我认为是因为 Windows 正在捕获它并将其丢弃。
有人知道我怎样才能让这些通过,无论是否使用 WIN32 窗口消息?
【问题讨论】:
-
更新:OnMouseLeftButtonUp 在 WPF 中触发,但不是 OnMouseLeftButtonDown。丢失了 plot.com?