如上

解决方案 »

  1.   

    UINT hit = CFrameWnd::OnNcHitTest(point);
        if ( hit == HTCAPTION && <point在按钮绘制区>) 
        {
            return HTCLIENT;
        }
        else
            return hit;参考下文,反其道而行之:
    http://www.codeproject.com/dialog/dragwindows.asp
      

  2.   

    这样一来又回出现新问题 它的OnNcMouseMove 方法 也会忽略该区域 还是不能不能模拟hover效果 以及 down效果 
    T_T 试试其他方法 。
      

  3.   

    http://www.codeproject.com/buttonctrl/CustomBitmapButtonDemo.asp?df=100&forumid=107186&exp=0&select=2141289
      

  4.   

    UINT CXXXDlg::OnNcHitTest(
       CPoint point 
    ){
      UINT nHit = CWnd::OnNcHitTest(point);
      CRect btnRect;
      // 在这里获得你的button的rect
      if(nHit == HTCAPTION && btnRect.PtInRect(point))
      {
        return 0;
      }
      return nHit;
    }
      

  5.   

    http://www.codeproject.com/buttonctrl/CustomBitmapButtonDemo.asp?df=100&forumid=107186&exp=0&select=2141289这里的方法是做了一个非模态 窗口来实现 -.- 问题也满多的 
    我的想法是实现类似 qq 2007 标题栏 中的那种 按钮 有hover down normal 状态
    用标题栏重绘的方法 就遇见了 我提得那个问题 
    我也试验了 取消标题栏 然后在 client 区域模拟实现 标题栏功能  但是 那样重绘圆角窗口时又有问题 
    重绘时 圆角边框 
    使用resize效果 就只有 2条变能够用来改变大小 而且 角处也不能改变大小了
    虽然可以自己做消息函数来解决 各位大大 还有没有别的更好方法 可以实现一个漂亮的 标题栏?
      

  6.   

    http://www.codeproject.com/buttonctrl/CCaptionButton.asp
      

  7.   

    顶 楼上的 
    那个代码 我之前也看过了 
    他只能响应按钮的一个事件  也就是 只能相应lbuttonup 或者 down 所以这么做出来的效果感觉还没有重绘来的效果好 
    不强求了 =.= 相似就好了
      

  8.   

    感觉还是去掉caption,然后自己处理灵活一些,这样以后需求再有变动不用束手无策了!
    自己实现也没有那么费劲,鼠标拖拽窗口也自己实现,算个圆角的边框还不很easy!
      

  9.   

    恩  还是去掉caption 模拟实现 吧  这样 消息传递也方便点
    在标题栏 模拟 实现控件 总觉得 好麻烦