大虾好.
   小弟现在遇到点麻烦,请教一二.
   问题是这样的.我想在一个对话框程序中捕获鼠标消息.但仅仅用WM_MOUSEMOVE这样的消息没法捕获鼠标在一些控件上运动和点击的消息.(比如对话框样做了个按钮,当鼠标在按钮上的时候就没法捕获WM_MOUSEMOVE以及鼠标按下和抬起的消息)
   请问有办法解决吗?
   还望有经验的大虾指点指点!!! :)

解决方案 »

  1.   

    继承windows的消息机制就可以了吧
      

  2.   

    在预处理消息中处理(WTL中)
    virtual BOOL PreTranslateMessage(MSG* pMsg)
    {
            if(pMsg->message==WM_MOUSEMOVE)
    {
    ......
    }
    return CWindow::IsDialogMessage(pMsg);
    }
      

  3.   

    有PreTranslateMessage中处理就可以了。
      

  4.   

    很简单,楼上门的说法都有缺陷
    就直接用SubclassDlgItem()把控件子类话就可以直接捕获所有的消息了并由你自己处理了。
      

  5.   

    子类话
    hook
    PreTranslateMessage
    都可以!!视你要做什么操作而定
      

  6.   

    这个问题在WINDOWS程序设计第七章后面一点有很详细的说明的,你可以看看的
    拦截滑鼠要比放置一个老鼠夹子容易一些,您只要呼叫:SetCapture (hwnd) ;
    在这个函式呼叫之後,Windows将所有滑鼠讯息发给视窗代号为hwnd的视窗讯息处理程式。之後收到滑鼠讯息都是以显示区域讯息的型态出现,即使滑鼠正在视窗的非显示区域。lParam参数将指示滑鼠在显示区域座标中的位置。不过,当滑鼠位於显示区域的左边或者上方时,这些x和y座标可以是负的。当您想释放滑鼠时,呼叫:ReleaseCapture () ;
    从而使处理恢复正常。呵呵希望对你有所帮助。最后做个广告 50米深蓝 www.50mi.net  C++网站
      

  7.   

    首先感谢楼上的大哥们这么热心.
    小弟试了下SetCapture(),
    但是用了这个函数后再点击对话框上的其他按钮就不起作用了.
    请问怎么样才能解决这个矛盾呢?
      

  8.   

    插入flash控件应该是最简单的。