MFC——在视图窗口加载背景图片

这是写的第一篇博客,就不求个多么的高深的技术问题了,就分享下我现在做毕设时遇见的问题和解决方法吧,希望对大家有所帮助。

问题:如何在视图窗口加载一张小图片作为背景,且充满整个View窗口呢?

方法:步骤如下

1.先创建或者添加一张资源图片(Bitmap),格式为bmp的,ID号 我这里为IDB_BITMAP1

2.在工程的View类里面定义两个变量:

    public:

    //为了给视图类画上背景 定义以下两个变量

    CBitmap *m_bitmap;
    CBrush m_brushbackground;

3.在类的构造函数里添加如下代码:

  m_bitmap = new CBitmap;
  m_bitmap ->LoadBitmap(IDB_BITMAP1);
  m_brushbackground.CreatePatternBrush(m_bitmap);//这三行是为了给视图窗口加载背景

4.打开类向导,用VS2012的右击这个C....View类然后选择类向导,在消息里面找到WM_ERASEBKGND,在右边点击添加处理程序,然后点编辑代码,ok。

5.然后在函数体添加代码如下:

  CView::OnEraseBkgnd(pDC);
  CDC dcMem;
  CClientDC dc(this);
  HBITMAP hbit;

  dcMem.CreateCompatibleDC(&dc);
  hbit = (HBITMAP)dcMem.SelectObject(m_bitmap);
  CRect rect;
  GetClientRect(&rect);
  pDC->FillRect(rect,&m_brushbackground);//充满整个客户区
  //GetDC()->BitBlt(10,10,400,300,&dcMem,0,0,SRCCOPY);//加载到某个固定位置
  //return CView::OnEraseBkgnd(pDC);
  return 0;

切记:一定要把自动加上的return  CView::OnEraseBkgnd(pDC);注释起来 要不然显示不出来背景的哦,然后写上return 0;

好了 ,这样应该就可以了  希望对你有用!!

posted @ 2013-05-06 16:33  CS-Surpass  阅读(2134)  评论(1)    收藏  举报