使用 CFileDialog 建立儲存對話方塊時,若過濾器字串結尾缺少 "||",最下方會出現亂碼項目。
CFileDialog saveDlg(FALSE, _T("txt"), _T("未命名"), 0,
_T("TXT Files(*.txt)|*.txt|All Files(*.*)|*.*")); // 缺少結尾 ||
CFileDialog saveDlg(FALSE, _T("txt"), _T("未命名"), 0,
_T("TXT Files(*.txt)|*.txt|All Files(*.*)|*.*||")); // 結尾雙管道
"描述1|副檔名1|描述2|副檔名2|...||"
範例:"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|All Files (*.*)|*.*||"
| 分隔。; 分隔:"Data Files|*.xlc;*.xls"。|| 結尾,否則對話方塊會讀取記憶體殘留資料顯示亂碼。CFileDialog(
BOOL bOpenFileDialog, // TRUE=開啟舊檔, FALSE=另存新檔
LPCTSTR lpszDefExt, // 預設副檔名
LPCTSTR lpszFileName, // 預設檔名
DWORD dwFlags, // OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT 等
LPCTSTR lpszFilter, // 過濾器字串(需以 || 結尾)
CWnd* pParentWnd // 父視窗
);
補上結尾 || 即可徹底解決亂碼問題。