编程格式

实现选择目录并显示功能,太冗余繁琐:

/****************************************************************************
能:选择打开图片路径,并在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来行代码,明显简约美观多了!!!!!!

猜你喜欢

转载自blog.csdn.net/hk121/article/details/80293470