這問題和原先的有些雷同,所以我就用原先的問了
CFileDialog 可以設定選多個檔案
那想請問一下,該如何抓到選取到的檔名呢?
因為我要將原來的舊檔名改為新的檔名...
但是,我發現如果使用 strFileName=CFileDialog::GetFileName();
抓到的檔名並沒有順序性...以上一篇的例子為例
三個檔案:ABC.01.TXT、ABC.02.TXT、ABC.03.TXT
抓到的檔名可能是:strFileName=""ABC.03.TXT" "ABC.01.TXT" "ABC.02.TXT""
我使用lpstrFileTitle依序處理選取到的檔案,但如果抓2個以上的檔案就出現NULL
如果選取一個檔案,則又可以抓到正確的檔案名稱
我試著將m_ofn.lpstrFileTitle抓到的值存入陣列中
但是,如果我選取三個檔案,試著抓第二筆,仍然失敗= =
請問我有什麼辦法透過lpstrFileTitle取得所選到的檔案名稱呢??
CString strOldFileName;
CString strNewFileName;
strOldFileName = pTransDbData.m_ofn.lpstrFileTitle;
if (pTransDbData.m_szFileTitle[0]=='\0'){
CString temp=pTransDbData.m_szFileTitle[1];
}else{strOldFileName = pTransDbData.m_ofn.lpstrFileTitle;}
※ 引述《don750421 (1+1≠2)》之銘言:
: CFileDialog 可以設定單選一個檔案或是多選多個檔案
: 如果,我需要將選取到的檔名放置到一個Edit Control中
: 我現在想到的做法有二
: 1.直接抓取選取檔案的第一個檔名
: 2.將選取的檔案存到CStringList,然後在做排序
: 再將List內的第一筆資料放到Edit Control欄位中
: 假設現在有三個檔案ABC.01.TXT、ABC.02.TXT、ABC.03.TXT
: 使用第一種方式
: CString strFileName;
: strFileName=CFileDialog::GetFileName();
: 假設選取第一個檔案(ABC.01.TXT)
: strFileName="ABC.01.TXT"
: 假設全部選取三個檔案(ABC.01.TXT、ABC.02.TXT、ABC.03.TXT)
: strFileName=""ABC.01.TXT" "ABC.02.TXT" "ABC.03.TXT""
: 而且,一次選取三個檔案的strFileName內的檔名沒有排序..
: 有可能第二次抓就變strFileName=""ABC.03.TXT" "ABC.01.TXT" "ABC.02.TXT""
: 那如果我只需要抓到第一筆的檔名,那我該怎麼做呢??
: 使用第二種方式
: 我查文章CFileDialig好像可以再選檔案時,將檔名存入
: 所以,我就設了一個
: CStringList m_lstFileName;
: 並且在開啟檔案時,將檔案存入
: m_lstFileName.AddTail(lpszFileName);
: 儘管我選取多筆或是一筆,m_lstFileName中count數只有一筆
: 請問是我少了什麼步驟嗎??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.171.195.193