怎么样在VC 中使用Static 控件来显示图像
在使用MFC编写程序时,经常需要显示图像;根据GDI的要求,需要一个DC(设备内容)作为显示的基础;实际上任何Windows的窗口都可以作为一个DC,我们可以通过API或MFC的函数来得到,例如: HDC GetDC (HWND);---这里的HWND是窗口的句柄 CDC * CWnd::GetDC ();---这里的CWnd实际上是任何从CWnd的类 当我们使用MFC的单文档或多文档框架时,我们可以使用CView作为图像显示的DC,这个时候我们将绘制图像的操作放在OnDraw中就可以了;当窗口无效或更新的时候,框架会自动调用该函数来重新绘制图像;这里没有什么问题,我们主要来谈谈另外一种模式:当你需要在一个基于Dialog程序或一个CDialog控件中显示图像的问题
实际上什么控件都可以作为图像显示的DC,他们可以是按钮、图片控件、Static控件等,只要有窗口的控件都可以得到DC
这里仅以Static控件作为图像显示的控件来介绍
首先看我程序的基本逻辑: 源文件后面的按钮是用来选择位图文件的;而下面的图像显示区域是用来显示图像的Static控件;当设置好要显示的图像文件以后,图像就自动在Static中画出来
第一次 一开始,我在CDialog对应的按钮处理程序中调用显示图像的代码,代码如下(IDC_PICVIEW为 Static的ID): 然后在CImageCntDlg::OnPaint中也调用ShowImage(TRUE);然后编译运行
一开始还可以,选择 BMP文件之后也可以正确选择,但当激活另一个程序(也就是隐藏了该窗口),然后再激活这个程序,这个时候发现 Static中图像显示闪烁一下后变成灰色的背景
到底什么发生了
到底什么发生了
上面的现象告诉我们,即使我们将 ShowImage放在CDia