VS2010 C++创建 MFC 基于对话框的应用程序、打开显示图片以及在此过程中遇到的一些问题和解决方法
一、基于MFC对话框创建步骤
1.新建一个MFC工程
2.根据自己需要修改名称和位置,点击确定
3.选择基于对话框,点击下一步
4.这里默认,点击下一步
5.这里也是默认的配置
6.这里选择APP类型,点击完成。
7.就会生成项目工程,可以把自动生成的一些控件删掉。
8.然后找到右边工具箱,添加两个picture控件和一个按钮控件
9.分别更改3个控件ID(右键点击属性即可更改)
10.更改配置属性
属性/配置属性/常规/使用unicode字符集/使用多字节字符集
二、添加变量
1.点击picture control 框,右键为两个picture控件添加control变量,类型为CStatic,变量名分别为M_PICTURE1和M_PICTURE2.
2.点击对话框,右键添加变量保存图片路径和名称变量,CString类型,变量名strFilePath,strFileName。
同理另外一个也是这样,添加完之后点击完成。
3.右键查看类向导,就可以看到添加的变量。
三、代码
1.双击button(打开)控件,此时就会跳转到程序页面。
2.参考代码如下:
为按钮添加打开文件的功能,并默认打开.png格式的文件,并在打开文件右下角添加文件类型选项,并将打开的图片显示在picture控件上。
CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*|"), this);
fileDlg.DoModal();
strFilePath=fileDlg.GetPathName(); //文件路径
strFileName = fileDlg.GetFileName(); //文件名
if (strFilePath == _T(""))
{
return;
}
CImage image;
image.Load(strFilePath);
CRect rectControl; //控件矩形对象
m_picture1.GetClientRect(rectControl);
CDC *pDc = m_picture1.GetDC(); //设备上下文对象的类
rectControl = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(), (int)rectControl.Height()));
m_picture1.SetBitmap(NULL); //清空picture
image.Draw(pDc->m_hDC, rectControl); //将图片绘制到Picture控件表示的矩形区域
image.Destroy();
m_picture1.ReleaseDC(pDc);
四.运行就会生产对话框如下
点击打开,就能选择想要打开的图片
五、过程中遇到的一些问题,以及解决方法
1.运行时,显示“VS转换到 COFF 期间失败 文件无效或损坏”。
解决方法:
找到C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\文件夹里的cvtres.exe文件删掉最老版本的就行。
2运行时,提示"不支持尝试执行的操作",可能是删除了某些控件,但是对应的控件变量没有删除掉,或者宏重定义。
解决办法:
在控件关联函数 中查找并删除对应的控件变量,或者看自己有没有宏重定义。
参考文章:
胡子拉渣青啊青博主的文章《C++ MFC打开图片并进行简单算法处理》。