写在前面的话
MFC程序与C和C++程序的运行是有区别的。C和C++都是从main函数开始执行一直到结束,而MFC程序不是这样。MFC是属于触发执行的类型,比如点击按钮打开一个本地文本。初学者一定要理解这种程序运行机制,也不要想着在MFC程序中寻找main函数,这样会撞一鼻子灰的。
基于上一篇新建的工程基础,本节做一个界面,包含一个Picture控件和一个Button控件,实现点击Button按钮,打开本地照片,显示在Picture控件中。话不多说,现在开始一步一步来实现!
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL1UEVNdXWU9UNNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLykTMyUzM0AjM0ADNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
打开上节建立好的工程,删除(选中控件,按Delete删除)默认添加的控件。然后新建Picture和Button控件。
调整控件大小和位置后,效果如上图所示。
1、单击选中Button按钮,在右边属性栏中修改Caption属性为载入图片,设置ID为IDC_OpenPicture。完成后的效果如上图所示。
2、电机选中Picture控件,修改ID为IDC_ShowPicture。
完成一二步之后,基本的界面布局已经完成。现在编译程序,看看界面的效果。运行效果如上图,现在点击载入图片按钮没有任何反应,是因为还没有设置按钮的点击事件。停止运行的程序,现在编写电机事件。
双击Button控件,跳转到当前Button点击事件处理函数。当我们点击载入图像按钮时,要执行的操作就是打开本地资源管理器,选择一张照片,然后显示在Picture控件中。下面直接上代码
void CFirstMFCDlg::OnBnClickedOpenpicture()
{
// TODO: 在此添加控件通知处理程序代码
CString PathName;
CString filter;
filter = "所有文件(*.bmp,*.png,*.gif,*.tiiff)|*.bmp;*.png;*.jpg;*.gif;*.tiff| BMP(*.bmp)|*.bmp| JPG(*.jpg)|*.jpg|PNG(*.png)|*.png|GIF(*.gif)|*.gif| TIFF(*.tiff)|*.tiff||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter, NULL);
if (dlg.DoModal() == IDOK)
{
//打开对话框获取图像信息
PathName = dlg.GetPathName(); //获取文件路径名 如D:\pic\abc.bmp
ATL::CImage myImage;
myImage.Load(PathName);
CRect rect;
CWnd *pWnd = GetDlgItem(IDC_ShowPicture); //(这是在此资源创建的类的内部, 若是在外部, 可先通过获得CMainFrame的指针, 再通过pMianFrame->GetDlgItem(IDCk_MY_PIC)来获取)
CDC *pDC = pWnd->GetDC();
pWnd->GetClientRect(&rect);
pDC->SetStretchBltMode(STRETCH_HALFTONE);
myImage.Draw(pDC->m_hDC, rect);
ReleaseDC(pDC);
myImage.Destroy();
//在Picture控件中显示图片
}
}
编写完程序之后,编译看效果。
点击载入图片按钮,会弹出资源管理器,选择有照片的文件夹,选择一张照片打开。
实际效果如上图所示。到目前为止,我们的效果已经达到了,继续载入图片,多测试几次该程序。
经测试,程序能够正常运行。到次,我们为本程序起一个名字叫做:照片查看器。
点击主界面面板,修改Caption属性值为照片查看器,查看运行效果,如上图所示。比之前的效果和谐多了吧!
好的本节就写到这里吧,关于该程序的源码,我打包上传CSDN,1个C币,需要的去下载。哈哈哈,给自己攒一点积分,以后下CSDN资料可以更自由一点。
下载地址:https://download.csdn.net/download/qq_39960119/11089143