应该在重载的OnNcPaint中先调用基类的OnNcPaint,再自己的作图。

解决方案 »

  1.   

    OnNCPaint响应系统消息重画非客户区,重载OnNCPaint后最好不要忘了调用基类的OnNCPaint
      

  2.   

    我的本意是在窗口的非客户区画自己的按纽,若调用了基类的OnNCPaint ,则重画无效。
      

  3.   

    不能直接调用 XXX::OnNcPaint();
    Default(); 相当于 XXX::OnNcPaint();
    用Default();之后,再画你的东西。:)
    你可以给我发e-mail: [email protected]
      

  4.   

    Default()是什么函数?请指教一下(的确不知道,是不是DefWindowProc?)
    我试了一下,这段代码可以:
    //定义函数
    afx_msg LRESULT OnNcPaint(WPARAM wParam, LPARAM lParam);
    //消息映射宏
    ON_MESSAGE(WM_NCPAINT, OnNcPaint)
    //函数
    afx_msg LRESULT CTestDlg::OnNcPaint(WPARAM wParam, LPARAM lParam)
    {
    LRESULT lResult = TRUE;
    lResult = ::DefWindowProc(this->m_hWnd, WM_NCPAINT, wParam, lParam);
    HDC hdc = ::GetWindowDC(m_hWnd);//, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN); 
    ::SetBkMode(hdc,TRANSPARENT);
    ::TextOut(hdc,100,3,_T("Paint None Client Area!"),24);
    ::ReleaseDC(m_hWnd, hdc);
    return lResult;
    }
    //你把分都给bodies吧,我也是看了他的提示才注意到DefWindowProc的。