_022_图片框_打开对话框_加载图片

=======================================


添加图片框


再添加一个打开对话框的测试按钮


为图片框关联一个变量,需要先修改图片框的ID


然后在按钮里添加如下代码

void C_001_Dlg::OnBnClickedButtonopendlg()
{
	//创建一个对话框
	CFileDialog cfopen(true, NULL, L"test.bmp", OFN_READONLY| OFN_OVERWRITEPROMPT, L"img Files (*.bmp;*.jpg)|*.bmp;*.jpg|All Files (*.*)|*.*|");
	int i=cfopen.DoModal();
	//CFileDialog的构造函数很关键
	//参数1 true是打开文件对话框,false是保存文件对话框
	//参数2 默认的文件扩展名,为NULL则不指定,这是保存的对话框时候用的,自动为保存的文件夹扩展名
	//参数3 在文件名框中显示的初始名称
	//参数4 OFN_OVERWRITEPROMPT 保存对话框下如果存在文件则提示是否覆盖,具体看文档
	//参数5 过滤的格式是  "名称|实际格式;实际格式2"
	//后面的参数可以默认了,几乎用不到

	HANDLE hd=0;
	if (i==IDOK)
	{
		CString str;
		str = cfopen.GetPathName();
	
		//载入图片到内存,并返回图片的句柄
		hd = LoadImage(NULL, str, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTSIZE);
		//参数1		    若加载程序外部资源传NULL,否则一般传AfxGetInstanceHandle()
		//参数2		    路径
		//参数3和4   大小
		//参数5        加载的图的类型
		//参数6   LR_CREATEDIBSECTION (使该函数返回DIB节位图句柄)  
		//			   LR_DEFAULTSIZE 忽略3和4参数,载入实际大小

		m_picture_ctl.SetBitmap((HBITMAP)hd);//设置位图
	}

	DeleteObject((HBITMAP)hd); //释放位图资源,其它资源释放方法请百度
}

上面代码的意思是打开对话框,从对话框中选取图片文件,然后图片文件

返回一个路径,利用这个路径去加载图片,图片返回句柄

然后再利用图片框的设置位图设置这个图片到图片框


vs2013的bug问题解决  添加位图提示Rc108错误

https://blog.csdn.net/zhyh1435589631/article/details/51181324


CStatic文档 (图片框的类)

https://msdn.microsoft.com/zh-cn/library/t98kd6f7.aspx


CFileDialog文档

https://docs.microsoft.com/zh-

cn/cpp/mfc/reference/cfiledialog-class



CFileDialog的第4个构造函数文档

https://docs.microsoft.com/zh-

cn/windows/desktop/api/commdlg/ns-commdlg-tagofna



LoadImage文档

https://blog.csdn.net/hisinwang/article/details/45752089


=






猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/80887754