MFC:选择相册和选择图片

/*选择文件夹*/
CString CDefectBugDlg::SelectFolder()
{
	TCHAR szFolderPath[520] = {0};
	CString strFolderPath;
    //BROWSEINFO结构中包含有用户选中目录的重要信息。
	BROWSEINFO  sInfo;																						      
	::ZeroMemory(&sInfo,sizeof(BROWSEINFO));
	sInfo.pidlRoot = 0;
	sInfo.lpszTitle = "请选择缓存文件所在文件夹";
	sInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX |BIF_DONTGOBELOWDOMAIN;
	sInfo.lpfn = NULL;

	LPITEMIDLIST    lpidlBrowse = ::SHBrowseForFolder(&sInfo);
	if(lpidlBrowse != NULL)
	{
		if(::SHGetPathFromIDListA(lpidlBrowse,szFolderPath))
		{
			strFolderPath = szFolderPath;
		}
	}
	if(lpidlBrowse != NULL)
	{
		::CoTaskMemFree(lpidlBrowse);
	}
	return strFolderPath;
}
/*判断选择的文件夹(打开的相册)中有没有图片*/
BOOL CDefectBugDlg::BMPFind(CString &m_Dir)
{
	CFileFind BF;			
	if(m_Dir.Right (1)!="\\")
		m_Dir+="\\";
	m_Dir+="*.bmp*";				
	BOOL ret = BF.FindFile (m_Dir);		
	return ret;
}
/*点击函数选择相册打开*/
void CDefectBugDlg::OnBnClickedOpenAlbum()
{
    //文件夹路径	
	CString m_FloderPath = SelectFolder();															
	CString m_TempPath = m_FloderPath;
    //路径符合
	if (BMPFind(m_TempPath))																					
	{
		hv_FilePath = m_FloderPath.GetBuffer(0);
		ListFiles(hv_FilePath, (HTuple("files").Append("follow_links")), &hv_ImageFiles);	
		TupleRegexpSelect(hv_ImageFiles, (HTuple("\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$").Append("ignore_case")), &hv_ImageFiles);	
		NewAlbumCustomized = TRUE;																		
		ReadImage(&ho_Image, HTuple(hv_ImageFiles[0]));
		for (int temp = 0; temp < 9; temp++)
		{
			ClearWindow(m_HWindowID[temp]);
			GetImagePointer1(ho_Image, NULL, NULL, &hv_Width, &hv_Height);				
			SetPart(m_HWindowID[temp], 0, 0, hv_Height - 1, hv_Width - 1);									
			DispObj(ho_Image, m_HWindowID[temp]);																	
		}	
		MainImgeShowed = TRUE;																		         
   }
	else{
		AfxMessageBox("选择文件夹不符合!");															
		return;
	}																
}
//打开图片
void SetParamsDlg::OnBnClickedOpenimg()
{
	char* pcsun="图片文件(*.bmp)|*.bmp||";																	//文件类型,用分号隔开
	CFileDialog m_ReadImgDlg(TRUE,NULL,NULL,0,pcsun,this);									//构造文件对话框对象
	//当点击确定按钮时候,会记录文件路径
	if(IDOK ==m_ReadImgDlg.DoModal()) 
	{
		m_SPDImgPath = m_ReadImgDlg.GetPathName();
	}
	else{																														//否则返回
		return;
	}
	hv_SPDImgPath = m_SPDImgPath.GetBuffer(0);
	ReadImage(&ho_SPDImage, hv_SPDImgPath);														//读取文件
	GetImagePointer1(ho_SPDImage, NULL, NULL, &hv_SPDWidth, &hv_SPDHeight);	//获取图片大小
	SetPart(m_SPDHWindowID, 0, 0, hv_SPDHeight - 1, hv_SPDWidth - 1);					//SetPart是Halcon函数,作用是调整图片在窗口中的位置
	ClearWindow(m_SPDHWindowID);
	DispObj(ho_SPDImage, m_SPDHWindowID);															//显示图片
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值