需要拦截哪些消息啊?
      在哪些消息里面绘制按纽?

解决方案 »

  1.   

    重载oncpaint消息就可以
    获取windowsrect大小,调用GetSystemMetrics获取标题栏的高
    然后自己刷新就可以添加按钮的
    http://www.codeproject.com上有例子我现在做的是,在上面贴按钮图片,来响应按钮消息
      

  2.   

    键是响应两个消息WM_Paint、WM_LBUTTONDOWN。
    收到前者时,你绘制按钮。收到后者时,判断用户是否点在了你的按钮上
      

  3.   

    Adding Buttons to Dialog Caption.http://www.codeguru.com/Cpp/W-D/dislog/titlebar/article.php/c1897
      

  4.   

    LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
    LRESULT lrst=DefWindowProc(message,wParam,lParam);
    if(!::IsWindow(m_hWnd))
    return lrst;
    if(message==WM_NCPAINT||message==WM_NCACTIVATE||message==WM_NOTIFY)
    {
    CDC*pWinDC=GetWindowDC();
    if(pWinDC)
    DrawTitleBar(pWinDC);
    ReleaseDC(pWinDC);
    }
    return lrst;}
      

  5.   

    http://www.vckbase.com/document/viewdoc/?id=317
    LRESULT CTitleBarDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
         {
          LRESULT lrst=CDialog::DefWindowProc(message, wParam, lParam);
          if (!::IsWindow(m_hWnd))
          return lrst;
         if (message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||
         message== WM_NCACTIVATE ||message == WM_NOTIFY)
          {
          CDC* pWinDC = GetWindowDC();
          if (pWinDC)
          DrawTitleBar(pWinDC);
          ReleaseDC(pWinDC);
          }
          return lrst;
         }
      

  6.   

    记录这个按钮的rect,在鼠标消息中判断鼠标的位置是否在这个rect中,如果是则绘制另一种按钮状态.判断是否在这个按钮的rect中可以用:rect.PtInRect(..)