/*选择文件夹*/
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); //显示图片
}