OnEraseBkgnd()
写这个函数。

解决方案 »

  1.   

    please notice 不是在响应时绘图!
      

  2.   

    处理 WM_ERASEBKGND 消息,如下:BOOL CBkDemoView::OnEraseBkgnd(CDC* pDC)
    {
    RECT     rect;
    CBrush   br;
    br.CreateSolidBrush(RGB(0,0,0));  //创建一个刷子,颜色为黑色
    GetClientRect( &rect );       //取得客户区边界
    pDC->FillRect( &rect, &br );  //用刚才创建的刷子画客户区 return true;
    // return CView::OnEraseBkgnd(pDC); //这一句要注释掉
    }
      

  3.   

    不懂中文呀!
    不是用消息响应的方法,这方法太笨
    有没有改变背景的函数,就像改变填充色的setbkcolor?
      

  4.   

    OnInitDialog()
    m_CBkBrush.CreateSolidBrush(RGB(0, 85, 206));
    ...
    OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    if(nCtlColor ==CTLCOLOR_DLG || nCtlColor ==CTLCOLOR_STATIC)
    {
    pDC->SetTextColor(RGB(255, 255, 255)/*GetSysColor(COLOR_HIGHLIGHTTEXT)*/) ;
    pDC->SetBkMode( TRANSPARENT );
    return (HBRUSH) m_CBkBrush.GetSafeHandle ();
    }
      

  5.   

    就是在erasebkgnd消息仲处理,但是要删掉他自带的return 后面的东西。然后返回true;
      

  6.   

    再WM_CTLCOLOR消息处理函数中把返回值更改
    成你需要的背景刷子!
      

  7.   

    WM_ERASEBKGND或在注册窗口类的时候用你想要的刷子注册!
      

  8.   

    其实我在windows 95程序设计charles petzold的中已经见到了。
    我只是想知道这儿到底有多少高手,看来很令我失望呀
      

  9.   

    TO:yu_wlof(yukun)
     这里的确有很多高手,抱着书上的死东西没有好处,多想想程序的具体实现吧。前辈开发了很多关于界面的东西,对于这些我们拿来用就是了。
      

  10.   

    所谓抱着书上的死东西现在已经成为某些人为自己找借口的习惯用语,书上的都不会,你还能会什么?只是复制粘贴吗?呵呵!我不敢苟同!同时我认为这个问题不是个死问题,是你学习是不是精的体现,(不是说我自己,我只会这一个问题,呵呵)。因为一看到,你就应该想到背景应该是窗口类结构的一个部分,因此应该首先考虑查找有没有修改类结构的函数!而SetClassLong应该是很常用的函数!!!
    难道你没用过?建议你还是好好看书吧,学习可不能玩虚的
      

  11.   

    BOOL CYinView::OnEraseBkgnd(CDC* pDC) 
    {
    // Create a pruple brush.
    CBrush brush(RGB(128,192,192));
    // Select the brush into the device context .
    CBrush* pOldBrush=pDC->SelectObject(&brush);
    // Get the area that needs to be erased .
    CRect rc;
    pDC->GetClipBox(&rc);
    //Paint the area.
    pDC->PatBlt(rc.left,rc.top,rc.Width(),rc.Height(),PATCOPY);
    //Unselect brush out of device context .
    pDC->SelectObject(pOldBrush);
    // Return nonzero to half fruther processing .
    return TRUE;
    ///**/ return CFormView::OnEraseBkgnd(pDC);
    }