MFC CFileDialog 文件過濾條件

今天寫一個選擇文件的對話框,使用CFileDialog:

    TCHAR *lpFilter = _T("Img Files(*.img) | *.img |All Files(*.*) | *.* ||");
    CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, lpFilter, this);
    if (IDOK == dlg.DoModal())
    {
        CString strPath = dlg.GetPathName();
    }

當對話框顯示出來時候,並沒有任何符合過濾條件的文件顯示,即使選All Files(*.*) 也沒有任何文件。

後來拿MSDN上對比,最後發現是過濾條件(lpFilter),字符串中的空格所致。

類型篩選(*.img, 不是類型說明(Img Files(*.img)))和其後的"|"符號中間不能有空格,否則類型篩選就會失效。最後的"*.*"和結束符"||"中間也不能有空格。即 將 TCHAR *lpFilter = _T("Img Files(*.img) | *.img |All Files(*.*) | *.* ||"); 改爲 TCHAR *lpFilter = _T("Img Files(*.img) | *.img| All Files(*.*) | *.*||"); 就可以了。

找了好久,真是個坑...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章