背景图象不一定是BMP格式,也可以是jpg格式.
VC自己的灰色背景太难看了!
谢了!

解决方案 »

  1.   


    有很多方法。
    比如你可以在显示时自己画。最常见的方法就是响应WM_ERASEBKGND消息通知该窗口擦除背景
    下面的例子是改变背景颜色,你把画刷改成位图画刷就可以做了了。
    BOOL CSampleView : : OnEraseBkgnd (CDC* pDC)
    {
    // Create a pruple brush.
    CBrush Brush (RGB (128 , 0 , 128) ) // 这儿!!!// Select the brush into the device context .
    CBrush* pOldBrush = pDC->SelcetObject (&brush)// Get the area that needs to be erased .
    CRect reClip
    pDC->GetCilpBox (&rcClip)
    //Paint the area.
    pDC-> PatBlt (rcClip.left , rcClip.top , rcClip.Width ( ) , rcClip.Height( ) , PATCOPY )//Unselect brush out of device context .
    pDC->SelectObject (pOldBrush )// Return nonzero to half fruther processing .
    return TRUE
    }
      

  2.   

    To:joke100:谢谢!
    我查了一下,在CFormView中没有WM_ERASEBKGND消息,请问怎么解决?
    谢谢!
      

  3.   


    OnEraseBkgnd是CWnd的虚函数,呵呵。
    你直接如上重载这个函数就是了
      

  4.   

    打开classwizard,翻到最后一页,把message filter改成window,然后就可以看到这消息了。
      

  5.   

    在你的代码中加入以下代码即可.  CDC  MemDC;  RECT  wrect;  HBITMAP  bitmap;
      CClientDC   pDC(this);
      MemDC.CreateCompatibleDC(&pDC);
      GetClientRect(&wrect);
      int  cx = wrect.right-wrect.left;
      int  cy = wrect.bottom-wrect.top;
      bitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
                               "c:\\back.bmp",IMAGE_BITMAP,cx,cy,
                               LOADFROMFILE|LR_CREATEDIBSECTION);
       ASSERT(bitmap);
       HBITMAP  OldBitmap;
       OldBitmap = (HBITMAP)MemDC.SelectObject(bitmap);
       pDC.BitBlt(0,0,cx,cy,&MemDC,0,0,SRCCOPY);
       MemDC.SelectObject(OldBitmap);注: "c:\\back.bmp" 是你的bmp文件给分快!!!
      

  6.   

    非常感谢 HKer_007(健康)的帮助,我正在用上面的方法进行测试.您的方法,
    稍后都给分!
      

  7.   

    请教To:joke100,请问位图画刷怎么定义,我太笨了.
    请教 HKer_007(健康):"c:\\back.bmp"如果不用硬地址用分配的ID,怎么做?
    谢谢!