字串結構
TCHAR szFilter[] = _T(
"Mp3 File(*.mp3)|*.mp3|"
"Wma File(*.wma)|*.wma|"
"Video File(*.dat)|*.dat|"
"Wave File(*.wav)|*.wav|"
"AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|"
"Media File(*.mmm)|*.mmm|"
"Mid File(*.mid;*.rmi)|*.mid;*.rmi|"
"MPEG File(*.mpeg)|*.mpeg|"
"All File(*.*)|*.*||");
格式規則
| 部分 | 範例 | 用途 |
| 描述字串 | Mp3 File(*.mp3) | 顯示在「檔案類型」下拉選單供使用者閱讀 |
| 分隔符 | | | 分隔「描述」與「模式」,以及各項目之間 |
| 模式字串 | *.mp3 | 傳給 GetOpenFileName 實際過濾檔案系統 |
| 雙管道結尾 | || | 標記字串結束 (必要) |
多模式支援
Mid File(*.mid;*.rmi)|*.mid;*.rmi — 模式字串可用分號 ; 分隔多個副檔名,描述字串同步顯示。
完整調用範例
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, szFilter, this);
if (dlg.DoModal() == IDOK) {
CString path = dlg.GetPathName();
// 播放 path
}
注意事項
- 字串中**不可包含換行**,上述多行寫法利用 C/C++ 字串字面量自動連接特性 (相鄰字串常量編譯期合併)。
- 若需動態構建,用
CString 逐項 Append 並確保結尾雙管道。
- Unicode 專案下
_T() / TEXT() 確保 TCHAR 正確編碼。
- 上一篇文章: JavaScript IIFE 內部函數表達式未執行:定義 ≠ 調用、閉包捕獲與手動調用示範
- 下一篇文章: DOS 通配符 * 與 ? 實測:* 後字元不被忽略、完整匹配語義驗證
Copyright ©
程式碼之家 All Rights Reserved