我想让鼠标移动到窗口中的某一按钮时,按钮对其不做出反映,
如:按钮不会向上抬起。不是简单的 Enable 和 Disable。就像我打开一个网页的时候,里面的所有控件,包括链接,对鼠标的事件,均不做出相应。

解决方案 »

  1.   

    EnableWindow不行?
    那就响应MouseMove函数 然后函数里什么都不做吧
      

  2.   

    在MouseMove函数 先取得按钮的Rect再用ptInRect测试是不是在按钮里
    是的话就不做任何处理
      

  3.   

    我是用钩子实现的,当钩取WM_MOUSEMOVE消息时在当前的窗口句柄的区域中画个矩形,
    之后,当不在这个区域,换到下一个区域时候,取消原来的矩形。在客户区时好用,当鼠标指针挪到窗口的工具栏时候,如果鼠标在工具栏按钮上面的时候,
    工具栏按钮就被激活,从而使画的矩形信息丢失,
    我就是想让鼠标挪到工具栏按钮的时候,工具栏按钮不做出相应。弄一天都没弄明白,郁闷死了。
      

  4.   

    LZ方法比较复杂了,不用hook也行滴按LS的LS试试
      

  5.   

    就像我打开一个网页的时候,里面的所有控件,包括链接,对鼠标的事件,均不做出相应。
    ____________________________________________________________这样做程序还有什么用,连退出都退不了。提供两种简单的思路:
    (1)用EnableWindow将整个窗体设置为不可用
    (2)做个透明窗体,盖到要禁用的窗体上。
      

  6.   

    CRect rect;
    m_wndToolBar.GetWindowRect(&rect);//针对于工具栏的 其他类似
    if(rect.PtInRect(point))
    { ...}
      

  7.   

    其实我的意思就是想让指定的窗体变成非激活状态,
    不是象EnableWindow那样是窗体变灰
    而这个才窗体不是程序运行的窗体,是其他桌面上的窗体.
      

  8.   

    处理你的WM_LBUTTONDOWN消息,在这个消息响应函数里获取鼠标指针的坐标以及各个控件的RECT,判断指针是否落在这些rect里.如果是,拦截,如果否,放行
      

  9.   

    不知道你究竟什么时候用这个功能,可以试试SetCapture.这样就不会有其他的东西响应鼠标的消息。注意要响应WM_CAPTURECHANGED。