大虾好.
小弟现在遇到点麻烦,请教一二.
问题是这样的.我想在一个对话框程序中捕获鼠标消息.但仅仅用WM_MOUSEMOVE这样的消息没法捕获鼠标在一些控件上运动和点击的消息.(比如对话框样做了个按钮,当鼠标在按钮上的时候就没法捕获WM_MOUSEMOVE以及鼠标按下和抬起的消息)
请问有办法解决吗?
还望有经验的大虾指点指点!!! :)
小弟现在遇到点麻烦,请教一二.
问题是这样的.我想在一个对话框程序中捕获鼠标消息.但仅仅用WM_MOUSEMOVE这样的消息没法捕获鼠标在一些控件上运动和点击的消息.(比如对话框样做了个按钮,当鼠标在按钮上的时候就没法捕获WM_MOUSEMOVE以及鼠标按下和抬起的消息)
请问有办法解决吗?
还望有经验的大虾指点指点!!! :)
解决方案 »
- snmp++
- 请教CDHtmlDialog如何使用外部资源
- 诚心请教一个D3D使用思路问题
- 关于MFC用CWnd类替换CMainFrame的问题...
- 开发一个类似QQ或联众的在线游戏平台,大家估计需要多少RMB和时间?
- 为什么我的ComboBox下拉菜单只能显示一行啊,其他的只能点击右边上下翻页来显示
- 高手来谈谈NAT是如何实现的?还有代理ARP、NAT两者的优缺点?
- MFC对话框变量映射问题
- 50分求解,急!!!!!
- 在对话框里输出文字?不要控件!!不要static 控件
- 刚找到 vc++6.0 和 .net2003的下载地址发上来与大伙共享
- RecordSet如果不关闭,然后再进行下一次的查找,是否会造成内存泄露?
virtual BOOL PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_MOUSEMOVE)
{
......
}
return CWindow::IsDialogMessage(pMsg);
}
就直接用SubclassDlgItem()把控件子类话就可以直接捕获所有的消息了并由你自己处理了。
hook
PreTranslateMessage
都可以!!视你要做什么操作而定
拦截滑鼠要比放置一个老鼠夹子容易一些,您只要呼叫:SetCapture (hwnd) ;
在这个函式呼叫之後,Windows将所有滑鼠讯息发给视窗代号为hwnd的视窗讯息处理程式。之後收到滑鼠讯息都是以显示区域讯息的型态出现,即使滑鼠正在视窗的非显示区域。lParam参数将指示滑鼠在显示区域座标中的位置。不过,当滑鼠位於显示区域的左边或者上方时,这些x和y座标可以是负的。当您想释放滑鼠时,呼叫:ReleaseCapture () ;
从而使处理恢复正常。呵呵希望对你有所帮助。最后做个广告 50米深蓝 www.50mi.net C++网站
小弟试了下SetCapture(),
但是用了这个函数后再点击对话框上的其他按钮就不起作用了.
请问怎么样才能解决这个矛盾呢?