我的程序是一个无边框窗口,我想在用户拖动对话框的任何部分时移动窗口。一旦使用 WM_SYSCOMMAND,所有后续的鼠标事件都将丢失。
首先,我编写了一个程序来捕获鼠标事件,并且在 WTL 中一切正常。
BEGIN_MSG_MAP(CMainDlg)
MSG_WM_LBUTTONUP(OnMouseUp)
MSG_WM_LBUTTONDOWN(OnMouseDown)
....
LRESULT OnMouseDown ( UINT uKeys, CPoint pt ) {
print ("on mouse down");
return 0;
}
LRESULT OnMouseUp ( UINT uKeys, CPoint pt ) {
print ("on mouse up");
return 0;
}
然后我将上面的 onMouseDown 更改为,
LRESULT OnMouseDown ( UINT uKeys, CPoint pt ) {
print ("on mouse down");
this->SendMessageW(WM_SYSCOMMAND, SC_MOVE|0x0002);
return 0;
}
拖动有效,窗口随鼠标一起移动。但是,不再触发 OnMouseUp 事件。
使用 WM_NCHITTEST 或 ProcessMessage setHandled 尝试了许多不同的方法,但都没有成功。
非常感谢,如果有人有任何建议:)
最佳答案
感谢您描述您这样做的原因,因为有更好的方法:Return HTCAPTION
in response to WM_NCHITTEST
.
关于c++ - WM_SYSCOMMAND SC_MOVE 耗尽鼠标事件并且鼠标弹起未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979278/