如何把sdi程序的非客户区的背景颜色改变呀,或者给其添加一幅位图背景。

解决方案 »

  1.   

    MDI框架的客户区被另一个窗口的框架所覆盖.为了改变客户区的背景色,你需要
    重画这个客户窗口.为了做到这点,你要处理消息WM_ERASEBKND产生一个新类,从
    CWnd继承,姑且称之为CMDIClient.给它加上一个成员变量,
    #include "MDIClient.h"
    class CMainFrame : public CMDIFrameWnd
    {
    ...
    protected:
    CMDIClient m_wndMDIClient;
    }
    在CMainFrame中重载CMDIFrameWnd::OnCreateClient
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
        if ( CMDIFrameWnd::OnCreateClient(lpcs, pContext) )
        {
            m_wndMDIClient.SubclassWindow(m_hWndMDIClient);
            return TRUE;
        }
        else
            return FALSE;
    }
    然后就可以加入对消息WM_ERASEBKGND的处理了.
      

  2.   

    int i = COLOR_3DFACE;
    COLORREF clr = RGB(255, 0, 0);
    ::SetSysColors(1, &i, &clr);
      

  3.   

    http://www.vckbase.com/document/viewdoc.asp?id=317
      

  4.   

    http://skinart.y365.com/myprogram/coolui.zip