Chinaunix首页 | 论坛 | 博客
  • 博客访问: 668587
  • 博文数量: 81
  • 博客积分: 1659
  • 博客等级: 上尉
  • 技术积分: 1286
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-02 16:36
个人简介

专注于嵌入式和图像处理

文章分类

全部博文(81)

文章存档

2014年(1)

2013年(7)

2012年(46)

2011年(27)

分类: WINDOWS

2012-12-05 17:26:19

之前的做法是在要加载背景图片的地方放一个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的图片。

阅读(8483) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~