1.基于对话框程序,图片显示在picture控件上,图片通过特定的库从文件夹中把文件读成DIB数据块,用StretchDIBits进行显示;
2.图片显示放在OnPaint里面,图片数据在别的函数中加载后,调用InvalidateRect()
遇到的问题:
(1)2中函数第二个参数用FLASE,留有上一张图片的残留:改成TRUE;
(2)改成TRUE后,遇到两个问题:一、第一次什么都不显示,要移动或者最小化一次才正常:
对话框OnPaint中 先 CDialog::OnPaint();这句 是 保证 对话框里的 控件 都 收到 Invalidate。
然后 m_Pic。UpdateWundow();// 保证 Pic 客户区 有效。
然后 你的 原代码。
二、图片显示闪烁:网上大都是采用双缓冲显示图片,试了,没成功。后来看了一个帖子,在OnEraseBkgnd中,用ExcludeClipRect排除图片实际的显示区域,能正常显示了。(先这么着,别的方法以后再研究)