该方式仅可显示BMP格式的图片。

一、实验步骤

1、使用MFC应用程序向导添加基于对话框的项目;

2、在资源视图中拖控件设计UI界面,包含Static Text和Button共2个控件; 1.jpg

3、修改Static Text控件ID为IDC_PIC,并添加成员变量m_pic;

4、双击Button按钮编写如下代码

void CtestDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("imageFiles(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this);
	fileDlg.DoModal();

	//获取图片路径和图片名称
	strFilePath = fileDlg.GetPathName();
	strFileName = fileDlg.GetFileName();
	//判断路径不为空
	if (strFilePath == _T(""))
	{
		return;
	}

	//设置静态空间窗口风格为位图居中显示
	m_pic.ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);

	//通过路径获取bitmap句柄
	#define HBMP(filepath, width, height) (HBITMAP)LoadImage(AfxGetInstanceHandle(), filepath, IMAGE_BITMAP, width, height, LR_LOADFROMFILE | LR_CREATEDIBSECTION)
	
	//获取控件的宽高
	CRect rect;
	m_pic.GetWindowRect(rect);

	//静态控件设置bitmap
	m_pic.SetBitmap(HBMP(strFilePath, rect.Width(), rect.Height()));
}

其中,strFilePath和strFileName是在CtestDlg类中添加的CString类型的属性,用于获取图片路径。

二、实验结果

点击“打开图片”按钮,对话框中可显示选择的图片。 2.jpg3.jpg