【问题标题】:Mouse drag in embbeded Win32 window嵌入式 Win32 窗口中的鼠标拖动
【发布时间】:2014-06-12 13:46:51
【问题描述】:

在 Qt 对话框中,我有一个嵌入的本机 Win32 窗口。与在任何标准 Win32 中一样,我定义了自己的消息队列,默认情况下,我将所有事件转发到父窗口,如果感兴趣的事件到达,我会执行一些额外的工作。

我的问题是,当我按下鼠标左键时,我会按预期得到WM_LBUTTONDOWN,但如果我一直按住它,那么我不会再收到鼠标点击事件,也就是说,我会得到WM_MOUSE消息,但掩码 (wParam) 或调用 GetKeyState 并不表示鼠标键一直按下。

使用以下参数创建窗口,

dwExStyle = WS_EX_TRANSPARENT;
dwStyle &= ~(WS_BORDER| WS_CAPTION | WS_DLGFRAME | WS_THICKFRAME);
CreateWindowExW(0,"Window","Name",dwStyle,
                           0,0,512,512,
                           hwndParent,NULL,hInstance,NULL )

当这个原生窗口没有嵌入任何对话框时,它可以正常工作。

我还可以将此窗口嵌入到 .NET 对话窗口中并观察相同的问题。

有什么线索会出什么问题吗?

【问题讨论】:

    标签: winapi dialog event-handling mouseevent


    【解决方案1】:

    你的意思是WM_MOUSEMOVE?您是否先尝试捕获鼠标?

    WM_LBUTTONDOWN 每次点击仅发送一次。您必须使用布尔值来跟踪在WM_MOUSEMOVE 事件期间是按下还是释放按钮。一起使用WM_LBUTTONDOWNWM_LBUTTONUP 消息来跟踪这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      相关资源
      最近更新 更多