VC加载png格式图片作为背景

8549阅读 0评论2012-12-05 xgmiao
分类:WINDOWS

之前的做法是在要加载背景图片的地方放一个Picture控件,然后在Picture控件上放图片,这样有个问题就是刷新的时候,加载的图片会把Pictuer控件位置上的控件遮挡住。后来才用下面的方法:
首先给要加载背景的窗口添加WM_ERASEBKGND消息响应函数OnEraseBkgnd。代码如下:

点击(此处)折叠或打开

  1. BOOL CDlgMain::OnEraseBkgnd(CDC* pDC)
  2. {
  3.     // TODO: 在此添加消息处理程序代码和/或调用默认值

  4.     CImage image;
  5.     image.Load(_T("./res/top.png"));

  6.     image.Draw(pDC->m_hDC,0,0,image.GetWidth(),image.GetHeight());

  7.     //ReleaseDC(pDC);

  8.     return TRUE;

  9.     //return CDialog::OnEraseBkgnd(pDC);

  10. }
说明:CImage是ATL实现的类,里面对图片的加载时通过GDI+实现的,所以使用该类要先包含atlimage.h头文件,Draw函数有多种形式,重写该方法时一定要注释return CDialog::OnEraseBkgnd(pDC),否者会调用CDialog中的该方法重新画背景,使我们上面画的背景没用。而且,我觉得应该加上 ReleaseDC(pDC),否者会CDC指针没有释放,本来想进CDialog类看下OnEraseBKgnd的实现,看其是否释放的,但找好好久都看不到该类的实现。CImage类目前好像不支持jpg的图片。

上一篇:VC回调函数理解
下一篇:求一个数的质因数分解式