天天看点

MFC_2、Picture和Button控件的应用写在前面的话

写在前面的话

MFC程序与C和C++程序的运行是有区别的。C和C++都是从main函数开始执行一直到结束,而MFC程序不是这样。MFC是属于触发执行的类型,比如点击按钮打开一个本地文本。初学者一定要理解这种程序运行机制,也不要想着在MFC程序中寻找main函数,这样会撞一鼻子灰的。

基于上一篇新建的工程基础,本节做一个界面,包含一个Picture控件和一个Button控件,实现点击Button按钮,打开本地照片,显示在Picture控件中。话不多说,现在开始一步一步来实现!

MFC_2、Picture和Button控件的应用写在前面的话

打开上节建立好的工程,删除(选中控件,按Delete删除)默认添加的控件。然后新建Picture和Button控件。

MFC_2、Picture和Button控件的应用写在前面的话

调整控件大小和位置后,效果如上图所示。

MFC_2、Picture和Button控件的应用写在前面的话

1、单击选中Button按钮,在右边属性栏中修改Caption属性为载入图片,设置ID为IDC_OpenPicture。完成后的效果如上图所示。

MFC_2、Picture和Button控件的应用写在前面的话

2、电机选中Picture控件,修改ID为IDC_ShowPicture。

MFC_2、Picture和Button控件的应用写在前面的话

完成一二步之后,基本的界面布局已经完成。现在编译程序,看看界面的效果。运行效果如上图,现在点击载入图片按钮没有任何反应,是因为还没有设置按钮的点击事件。停止运行的程序,现在编写电机事件。

MFC_2、Picture和Button控件的应用写在前面的话

双击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控件中显示图片
	}
}
           

编写完程序之后,编译看效果。

MFC_2、Picture和Button控件的应用写在前面的话

点击载入图片按钮,会弹出资源管理器,选择有照片的文件夹,选择一张照片打开。

MFC_2、Picture和Button控件的应用写在前面的话

实际效果如上图所示。到目前为止,我们的效果已经达到了,继续载入图片,多测试几次该程序。

MFC_2、Picture和Button控件的应用写在前面的话

经测试,程序能够正常运行。到次,我们为本程序起一个名字叫做:照片查看器。

MFC_2、Picture和Button控件的应用写在前面的话

点击主界面面板,修改Caption属性值为照片查看器,查看运行效果,如上图所示。比之前的效果和谐多了吧!

好的本节就写到这里吧,关于该程序的源码,我打包上传CSDN,1个C币,需要的去下载。哈哈哈,给自己攒一点积分,以后下CSDN资料可以更自由一点。

下载地址:https://download.csdn.net/download/qq_39960119/11089143

继续阅读