实现选择目录并显示功能,太冗余繁琐:
/****************************************************************************
功 能:选择打开图片路径,并在Edit control框中显示图片路径
函 数:SetDlgItemText(IDC_EDIT1, Str); 设置字符串文本,IDC_IDET1为编辑框ID
备 注:https://blog.csdn.net/chunleixiahe/article/details/50817049
****************************************************************************/
//图像路径
void Cbin32Dlg::OnBnClickedButton7()
{
// TODO: 在此添加控件通知处理程序代码
BROWSEINFO broInfo = { 0 };
TCHAR szDisName[MAX_PATH] = { 0 };
broInfo.hwndOwner = this->m_hWnd;
broInfo.pidlRoot = NULL;
broInfo.pszDisplayName = szDisName;
broInfo.lpszTitle = _T("选择保存路径");
broInfo.ulFlags = BIF_NEWDIALOGSTYLE | BIF_DONTGOBELOWDOMAIN
| BIF_BROWSEFORCOMPUTER | BIF_RETURNONLYFSDIRS | BIF_RETURNFSANCESTORS;
broInfo.lpfn = NULL;
broInfo.lParam = NULL;
broInfo.iImage = IDR_MAINFRAME;
LPITEMIDLIST pIDList = SHBrowseForFolder(&broInfo);
if (pIDList != NULL)
{
memset(szDisName, 0, sizeof(szDisName));
SHGetPathFromIDList(pIDList, szDisName);
strFolderPath1 = szDisName;
}
// CString picturepath = strFolderPath;不能想当然赋值
//picturepath.SetWindowText("Hello");
CString Str = strFolderPath1;
SetDlgItemText(IDC_EDIT1, Str); //IDC_IDET1为编辑框ID
}
//保存特征路径
void Cbin32Dlg::OnBnClickedButton8()
{
// TODO: 在此添加控件通知处理程序代码
BROWSEINFO broInfo = { 0 };
TCHAR szDisName[MAX_PATH] = { 0 };
broInfo.hwndOwner = this->m_hWnd;broInfo.pidlRoot = NULL;
broInfo.pszDisplayName = szDisName;
broInfo.lpszTitle = _T("选择保存路径");
broInfo.ulFlags = BIF_NEWDIALOGSTYLE | BIF_DONTGOBELOWDOMAIN
| BIF_BROWSEFORCOMPUTER | BIF_RETURNONLYFSDIRS | BIF_RETURNFSANCESTORS;
broInfo.lpfn = NULL;
broInfo.lParam = NULL;
broInfo.iImage = IDR_MAINFRAME;
LPITEMIDLIST pIDList = SHBrowseForFolder(&broInfo);
if (pIDList != NULL)
{
memset(szDisName, 0, sizeof(szDisName));
SHGetPathFromIDList(pIDList, szDisName);
strFolderPath2 = szDisName;
}
CString Str = strFolderPath2;
SetDlgItemText(IDC_EDIT2, Str); //IDC_IDET1为编辑框ID
}
//保存结果路径void Cbin32Dlg::OnBnClickedButton9()
{
// TODO: 在此添加控件通知处理程序代码
BROWSEINFO broInfo = { 0 };
TCHAR szDisName[MAX_PATH] = { 0 };
broInfo.hwndOwner = this->m_hWnd;
broInfo.pidlRoot = NULL;
broInfo.pszDisplayName = szDisName;
broInfo.lpszTitle = _T("选择保存路径");
broInfo.ulFlags = BIF_NEWDIALOGSTYLE | BIF_DONTGOBELOWDOMAIN
| BIF_BROWSEFORCOMPUTER | BIF_RETURNONLYFSDIRS | BIF_RETURNFSANCESTORS;
broInfo.lpfn = NULL;
broInfo.lParam = NULL;
broInfo.iImage = IDR_MAINFRAME;
LPITEMIDLIST pIDList = SHBrowseForFolder(&broInfo);
if (pIDList != NULL)
{
memset(szDisName, 0, sizeof(szDisName));
SHGetPathFromIDList(pIDList, szDisName);
strFolderPath3 = szDisName;
}
CString Str = strFolderPath3;
SetDlgItemText(IDC_EDIT3, Str); //IDC_IDET3为编辑框ID
}
作为一个高级算法工程师,编程要好。
以上90页代码明显可以优化啊,而且命名明显低级,怎么能体现英文水平呢,
所以改写成能直观理解的名称,改写如下:
/****************************************************************************功 能:选择打开文件夹路径,并在Edit control框中显示图片路径
参 数:
返 回: strFolderPath;分别返回图片,特征和结果的路径。
备 注:https://blog.csdn.net/chunleixiahe/article/details/50817049
****************************************************************************/
CString Cbin32Dlg::Get_file_path()
{
// TODO: 在此添加控件通知处理程序代码
BROWSEINFO broInfo = { 0 };
TCHAR szDisName[MAX_PATH] = { 0 };
broInfo.hwndOwner = this->m_hWnd;
broInfo.pidlRoot = NULL;
broInfo.pszDisplayName = szDisName;
broInfo.lpszTitle = _T("选择保存路径");
broInfo.ulFlags = BIF_NEWDIALOGSTYLE | BIF_DONTGOBELOWDOMAIN
| BIF_BROWSEFORCOMPUTER | BIF_RETURNONLYFSDIRS | BIF_RETURNFSANCESTORS;
broInfo.lpfn = NULL;
broInfo.lParam = NULL;
broInfo.iImage = IDR_MAINFRAME;
CString strFolderPath;
LPITEMIDLIST pIDList = SHBrowseForFolder(&broInfo);
if (pIDList != NULL)
{
memset(szDisName, 0, sizeof(szDisName));
SHGetPathFromIDList(pIDList, szDisName);
strFolderPath = szDisName;
}
return strFolderPath;
}
//选择保存图像路径
void Cbin32Dlg::OnBnClickedButton7()
{
// TODO: 在此添加控件通知处理程序代码
picture_path = Get_file_path();
SetDlgItemText(IDC_EDIT1, picture_path); //IDC_IDET1为编辑框ID
}
//选择保存特征路径
void Cbin32Dlg::OnBnClickedButton8()
{
// TODO: 在此添加控件通知处理程序代码
feat_path = Get_file_path();
SetDlgItemText(IDC_EDIT2, feat_path); //IDC_IDET1为编辑框ID
}
//选择保存结果路径
void Cbin32Dlg::OnBnClickedButton9()
{
// TODO: 在此添加控件通知处理程序代码
result_path = Get_file_path();
SetDlgItemText(IDC_EDIT3, result_path); //IDC_IDET3为编辑框ID
}
已经改造好了,
50来行代码,明显简约美观多了!!!!!!