您的位置:首页 > 其它

MFC制作选择文件夹对话框以及通过固定分隔符解析文件名(字符串)

2012-04-13 15:59 501 查看
1、MFC实现一个文件夹选择的功能

BROWSEINFO bi;
char Buffer[MAX_PATH];
//初始化入口参数bi开始
try
{
bi.hwndOwner = NULL;
bi.pidlRoot =NULL;//初始化制定的root目录很不容易,
bi.pszDisplayName = Buffer;//此参数如为NULL则不能显示对话框
bi.lpszTitle = "选择文件夹";
//bi.ulFlags = BIF_BROWSEINCLUDEFILES;//包括文件
bi.ulFlags = BIF_EDITBOX;//包括文件
bi.lpfn = NULL;
bi.iImage=IDR_MAINFRAME;
//初始化入口参数bi结束
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
if(pIDList)
{
SHGetPathFromIDList(pIDList, Buffer);
//取得文件夹路径到Buffer里
m_strTaskListFolder = Buffer;//将文件夹路径保存在一个CString对象里
}
m_strTaskListFolder += "\\";//双斜杠\\表示一个斜杠\;
//AfxMessageBox(m_strTaskListFolder);
}
catch (CString err)
{
AfxMessageBox(err);
return;
}

2、通过固定分隔符解析文件名,这里的文件名示例:1022_20110802_L4_M1_input.xml,通过下划线来分解,获得L4,来执行相应的动作。

int i;
CString strTaskLevel,strTaskModuleName;
for(i=0;i<m_nTaskNum;i++)
{
if(m_TaskList.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
{
CString selectTask = m_TaskList.GetItemText(i,1);
CString strTmp(selectTask);
//以下划线为分隔符解析文件名,启动相应的程序
int pos=strTmp.Find('_');
int nUnderLineCount = 0;
while (pos != -1)
{
if (nUnderLineCount == 2)
{
strTaskLevel = strTmp.Left(pos);
//AfxMessageBox(strTaskLevel);
}
strTmp = strTmp.Mid(pos+1);
pos = strTmp.Find('_');
nUnderLineCount ++;
}
}
}
if (strTaskLevel == "L3")
{
strTaskModuleName = "GeoCorrect.exe";
//AfxMessageBox("L3 start");
}
else if (strTaskLevel == "L4")
{
strTaskModuleName = "OrthoREC.exe";
//AfxMessageBox("L4 start");
}
else if (strTaskLevel == "L5")
{
strTaskModuleName = "IRSAFusion.exe";
//AfxMessageBox("L5 start");
}
else if (strTaskLevel == "L6")
{
strTaskModuleName = "MosaicTool.exe";
//AfxMessageBox("L6 start");
}
else
AfxMessageBox("不是标准的订单名称,无法启动任务!");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: