MFC製作選擇文件夾對話框以及通過固定分隔符解析文件名(字符串)

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("不是標準的訂單名稱,無法啓動任務!");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章