看板 C_and_CPP 關於我們 聯絡資訊
這問題和原先的有些雷同,所以我就用原先的問了 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