首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC CFileDialog 亂碼問題:過濾器字串必須以雙管道結尾

     編輯:程式設計綜合問答

使用 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           // 父視窗
);

補上結尾 || 即可徹底解決亂碼問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved