关于OnNcLButtonUp不能响应消息的问题
2009-03-15 20:59
507 查看
我使用了OnNcLButtonDown可以响应消息,之后使用OnNcLButtonUp却不能响应单击消息,但双击能响应。
网上找了些资料,说因为窗口管理器在处理 OnNcLButtonDown 的时候捕捉了鼠标焦点,即使用了 SetCapture 函数,在捕捉了鼠标焦点后,窗口就不会发送 WM_NCLBUTTONUP 消息而会发送 WM_LBUTTONUP 消息。
解决办法:
在你的CXXDialog中的消息处理函数OnSysCommand()(对WM_SYSCOMMAND的响应)添加下面代码:
void CXXXDialog::OnSysCommand(UINT nID, LPARAM lParam)
{
if( (nID & 0xFFF0) == IDM_ABOUTDLG )
{
// 省略...
}
else
{
// 这是本来有的
CDialog::OnSysCommand(nID, lParam);
// 加入下面这2行
if( (nID & 0xFFF0) == SC_MOVE )
PostMessage(WM_NCLBUTTONUP, nID, lParam);
}
}
当DLG收到WM_NCLBUTTONDOWN后, 却省的DefWindowProc会发送WM_SYSCOMMAND, 然后在处理WM_SYSCOMMAND时, 还会有一些消息被发送并处理, 会使WM_NCLBUTTONUP不会被收到, 所以在WM_SYSCOMMAND的处理返回后, 再补发一个WM_NCLBUTTONUP
网上找了些资料,说因为窗口管理器在处理 OnNcLButtonDown 的时候捕捉了鼠标焦点,即使用了 SetCapture 函数,在捕捉了鼠标焦点后,窗口就不会发送 WM_NCLBUTTONUP 消息而会发送 WM_LBUTTONUP 消息。
解决办法:
在你的CXXDialog中的消息处理函数OnSysCommand()(对WM_SYSCOMMAND的响应)添加下面代码:
void CXXXDialog::OnSysCommand(UINT nID, LPARAM lParam)
{
if( (nID & 0xFFF0) == IDM_ABOUTDLG )
{
// 省略...
}
else
{
// 这是本来有的
CDialog::OnSysCommand(nID, lParam);
// 加入下面这2行
if( (nID & 0xFFF0) == SC_MOVE )
PostMessage(WM_NCLBUTTONUP, nID, lParam);
}
}
当DLG收到WM_NCLBUTTONDOWN后, 却省的DefWindowProc会发送WM_SYSCOMMAND, 然后在处理WM_SYSCOMMAND时, 还会有一些消息被发送并处理, 会使WM_NCLBUTTONUP不会被收到, 所以在WM_SYSCOMMAND的处理返回后, 再补发一个WM_NCLBUTTONUP
相关文章推荐
- 一个解决OnNcLButtonUp不能响应消息问题的更好办法
- 关于CStatic类不能重载ON_WM_LBUTTONDOWN消息的问题
- 双击消息(OnNMDblclkList)处理函数中不能设断点的问题
- 关于removeCallbacks不能移除消息的问题
- 关于如何解决C++ Builder中DBLookupComboBox不能输入的问题:
- (转载) 关于MotionEvent.ACTION_UP无法被响应的问题
- 关于MotionEvent.ACTION_UP无法被响应的问题
- 关于ON_MOUSEWHEEL不响应问题解决方法
- 关于TRACE不能UP的问题
- 在对话框中动态创建的菜单不能响应UpdeateCommand的问题解决方法
- 关于在页面跳转前alert()不能弹出消息的问题
- ATL中控件不能响应消息的问题
- 关于html控件button的onclick和onserverclick事件不能同时起作用问题
- 关于onnclbuttonup
- 关于listview重写onintercepttouchevent不响应move和up事件
- 关于 ExtAspNet 控件 Tree 嵌套在 Region Panel 内 OnNodeCommand 无响应的问题解决方法
- 关于非模式对话框(Modeless Dialog)无法响应WM_KILLFOCUS消息问题
- 关于微信支付IWXAPIEventHandler接口中onresp不能调用的问题
- 关于非客户区的onnclbuttonup
- 关于采用默认方式处理WM_NCLBUTTONDOWN消息而“无法”产生WM_NCLBUTTONUP消息的问题