如何改变单文档的标题颜色?

解决方案 »

  1.   

    在OnNcPaint 中调用 drawtext记住DC要用 CWindowDC。
      

  2.   


    哈哈...进步慢哦,都已经用四年了,OnNcPaint 没有哦?
      

  3.   

    OnNcPaint 就是 WM_NCPAINT 的消息响应函数。你响应一下WM_NCPAINT 。在消息响应函数里面画标题的颜色就行了。
      

  4.   

    WM_NCPAINT 手动添加?我是在CMainFrame哦,没有看到WM_NCPAINT阿
      

  5.   


    void CMainFrame::DrawTitleBar(CDC *pDC)
    {
    if (m_hWnd)
    {
    CBrush Brush(RGB(0,0,0));
    CBrush* pOldBrush = pDC->SelectObject(&Brush); CRect rtWnd, rtTitle, rtButtons;
    GetWindowRect(&rtWnd); 
    CPoint point;
    //填充顶部框架
    point.x = rtWnd.Width();
    point.y = GetSystemMetrics(SM_CYSIZE) + GetSystemMetrics(SM_CYFRAME)+1;
    pDC->PatBlt(0, 0, point.x, point.y, PATCOPY);
    //填充左侧框架
    point.x = GetSystemMetrics(SM_CXFRAME);
    point.y = rtWnd.Height();
    pDC->PatBlt(0, 0, point.x, point.y, PATCOPY);
    }
    }//消息响应
    LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    LRESULT lrst=CFrameWnd::DefWindowProc(message, wParam, lParam);

    if (!::IsWindow(m_hWnd))
    return lrst;

    if (message == WM_MOVE || message == WM_NCPAINT ||message == WM_NCACTIVATE ||message == WM_NOTIFY)
    {
    CDC* pWinDC = GetWindowDC();
    if (pWinDC)
    DrawTitleBar(pWinDC);
    ReleaseDC(pWinDC);
    }
    return lrst;
    }成功,并分享 :-)