我想在WPF应用程序中处理WM_LBUTTONDBLCLK消息。这是我的代码:
public MainWindow()
{
InitializeComponent();
ComponentDispatcher.ThreadFilterMessage += ComponentDispatcher_ThreadFilterMessage;
this.Loaded += MainWindow_Loaded;
}
private void ComponentDispatcher_ThreadFilterMessage(ref MSG msg, ref bool handled)
{
if (msg.message == 0x0203)//WM_LBUTTONDBLCLK message
{
//do something
}
}
但我无法收到WM_LBUTTONDBLCLK(0x0203)消息。在这个链接(https://msdn.microsoft.com/en-us/library/windows/desktop/ms645606(v=vs.85).aspx),我知道了
只有具有CS_DBLCLKS样式的窗口才能接收WM_LBUTTONDBLCLK消息
我不知道如何在WPF窗口中设置CS_DBLCLKS样式。有人可以帮忙吗?
到目前为止,找不到在wpf中设置此样式的方法。但我以另一种方式解决了。
计算两条WM_LBUTTONDBCLK
消息的时差,如果时间跨度大于DoubleClickTime(由GetDoubleClickTime()
获取)则不执行任何操作。