引言:今天閱讀前人源碼,看見一個提取文件名字的功能,用了string的函數折騰了一大堆,結果一查MsDoc,微軟原來早都提供了5個用於提取文件名稱的函數。 個人技術博客(文章整理+源碼): https://zobolblog.github.io/LearnWinAPI/ 最終效果: 1.CFileD ...
引言:今天閱讀前人源碼,看見一個提取文件名字的功能,用了string的函數折騰了一大堆,結果一查MsDoc,微軟原來早都提供了5個用於提取文件名稱的函數。
個人技術博客(文章整理+源碼): https://zobolblog.github.io/LearnWinAPI/
最終效果:
1.CFileDialog::GetPathName
調用此函數可得到在對話框中輸入的文件的完整路徑。
CString GetPathName() const;
2.CFileDialog::GetFileName
調用此函數可得到在對話框中輸入的文件名的名稱。
CString GetFileName() const;
3.CFileDialog::GetFileTitle
調用此函數可得到在對話框中輸入的文件的標題。
CString GetFileTitle() const;
4.CFileDialog::GetFolderPath
調用此成員函數可得到當前打開的文件夾或目錄的路徑,以用於資源管理器樣式的“打開”或“另存為公用”對話框。
CString GetFolderPath() const;
5.CFileDialog::GetFileExt
調用此函數可得到輸入對話框的文件名的擴展名。
CString GetFileExt() const;
6.官方網站:
源碼:
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|") _T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|") _T("*.xlc; *.xls|All Files (*.*)|*.*||"); CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter,NULL,NULL,1); if (dlg.DoModal() != IDOK) { CommDlgExtendedError(); } else { CString filePathName = dlg.GetPathName();//完整的文件路徑 CString fileName = dlg.GetFileName(); // 只有文件名字和尾碼 CString fileExt = dlg.GetFileExt(); // 只有尾碼 CString fileTitle = dlg.GetFileTitle(); // 只有文件名 CString path = dlg.GetFolderPath();// 只有文件路徑 }
效果:
本人個人技術博客: https://zobolblog.github.io/LearnWinAPI/ ,個人公眾號:zobol的魔法藏書室,知乎,B站:zobol