⑴ MFC的文件對話框過濾器怎麼設置
CFileDialog::CFileDialog
CFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL
);
參數: bOpenFileDialg 如果為TRUE, 則創建文件打開對話框;如果為FALSE,則構造一個File Save As(另存為)對話框。
lpszDefExt 預設文件擴展名,如果用戶在文件名編輯框中不包含擴展名,則lpszDefExt定義的擴展名自動加到文件名後。如果為NULL,則不添加擴展名。
lpszFileName 初始顯示於文件名編輯框中的文件名,如果為NULL,則不顯示初始文件名。
dwFlags 一個或多個標志的組合,使你可定製對話框。要了解這些標志的描述,可參閱聯機文檔「Win32 SDK」中的OPENFILENAME結構。如果你改變m_ofn.Flags結構成員,在改變中用OR操作保持預設行為完整。
lpszFilter 一列字元串對,指定可以應用到文件的過濾器。如果指定過濾器,僅被選擇的文件顯示於文件列表框中。請參閱說明部分,了解如何使用過濾器。
pParentWnd 指向文件對話框對象的父窗口或擁有者窗口。
說明:
調用此成員函數構造一個標准Windows文件對話框對象,或構造一個打開對話框或構造一個存檔對話框,根據bOpenFileDialog的值決定。
OFN_ALLOWMULTISELECT標志。你應提供文件名緩沖區來放置返回的多個文件名的列表,這通過用一個分配了的緩沖區指針替換m_ofn.lpstrFile來實現,要在創建了CFileDialog之後調用DoModal之前進行此操作。另外,必須用m_ofn.lpstrFile指向的緩沖區位元組數來設置m_ofn.nMaxFile。
為使用戶用滑鼠或鍵盤改變一個Explorer風格對話框的大小,設置OFN_ENABLESIZING標志,這僅當你提供一個鉤子進程或定製模板時才有必要設置。此標志僅與一個Explorer風格的對話框一起工作,舊風格的對話框不可改變大小。
lpszFilter參數用於判斷文件名類型及文件列表框中哪些可被顯示。雙字元串的第一個字元串描述過濾器,第二個串表明使用的文件擴展名,多重擴展可用「;」來指定。字元串由兩個「|」字元結尾,最後是一個NULL。也可使用CString對象作為參數。
例如,Mirosoft Excel 允許用戶用.XLC擴展名(表)或.XLS(工作表)打開文件,Excel過濾器應如下:
static char BASED_CODE szFilter[] =
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";