今天寫一個選擇文件的對話框,使用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(*.*) | *.*||"); 就可以了。
找了好久,真是個坑...