在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对话框窗口中,并观察到同样的问题。
你知道哪里出了问题吗?
你是说WM_MOUSEMOVE
吗?你试过先抓老鼠吗?
WM_LBUTTONDOWN
每次点击只发送一次。您必须使用布尔值来跟踪在WM_MOUSEMOVE
事件期间按钮是否被按下或释放。同时使用WM_LBUTTONDOWN
和WM_LBUTTONUP
消息来跟踪这一点