CFileDialog類封裝了Windows常用的文件對話框。常用的文件對話框提供了一種簡單的與Windows標(biāo)準(zhǔn)相一致的文件打開和文件存盤對話框功能。
可以用構(gòu)造函數(shù)提供的方式使用CFileDialog,也可以從CFileDialog派生出自己的對話類并編寫一個構(gòu)造函數(shù)來適應(yīng)你的需要。每種情況下,對話框都與標(biāo)準(zhǔn)MFC對話框一樣工作。因?yàn)樗鼈兌际荂CommonDialog類的派生類。
要使用CFileDialog,先用CFileDialog構(gòu)造函數(shù)構(gòu)造一個對象,當(dāng)創(chuàng)建了一個對話框后,可以設(shè)置或修改m_ofn結(jié)構(gòu)中的任何值,以初始化對話框控件的值或狀態(tài)。m_ofn結(jié)構(gòu)是OPENFILENAME類型的。要了解更多信息,可參閱聯(lián)機(jī)文檔“Win32 SDK”中的OPENFILENAME結(jié)構(gòu)。
初始化對話框控件后,調(diào)用DoModal成員函數(shù)顯示對話框并使用戶輸入路徑和文件。DoModal返回不論是用戶選擇了OK(IDOK)還是取消(IDCANCEL)按鈕。
當(dāng)DoModal返回IDOK,可以使用某一個CFileDIalog的公共成員函數(shù)獲取用戶輸入的信息。
CFileDIalog包含許多保護(hù)成員,使你可以處理常用的共享沖突、文件名合法性檢查、列表框改變通知。這些保護(hù)成員對許多應(yīng)用來說用處不大,因?yàn)槿笔√幚硎亲詣拥摹@些函數(shù)來說,消息映射入口是不必要的,因?yàn)樗鼈兪菢?biāo)準(zhǔn)虛函數(shù)。
可以使用Windows CommDlgExtendError函數(shù)判斷在初始化對話框時是否是發(fā)生了錯誤,并獲取關(guān)于錯誤的更多信息。
析構(gòu)一個CFileDialog對象是自動,無須調(diào)用CDialog::EndDialog。
要使用戶選用多個文件,可在調(diào)用DoModal之前設(shè)置OFN_ALLOWMULTISELECT標(biāo)志。你應(yīng)提供文件名緩沖區(qū)來放置返回的多個文件名的列表,這通過用一個分配了的緩沖區(qū)指針替換m_ofn.lpstrFile來實(shí)現(xiàn),要在創(chuàng)建了CFileDialog之后調(diào)用DoModal之前進(jìn)行此操作。另外,必須用m_ofn.lpstrFile指向的緩沖區(qū)字節(jié)數(shù)來設(shè)置m_ofn.nMaxFile。
CFileDialog依賴于Windows3.1及以后版本中的COMMDLG.DLL。
如果從CFileDialog中派生出一個新類,可用消息映射處理。要擴(kuò)展消息處理,從CWnd中派生一個類,向新類中加入一個消息映射并為新消息提供成員函數(shù),無須提供一個鉤子函數(shù)來定制對話框。
要定制對話框,從CFileDialog中派生一個對象,提供一個定制對話模板,從擴(kuò)展控件中加入一個消息映射,處理通知消息。任意未處理的消息將傳遞給基類。
無須定制鉤子函數(shù)。
#include <afxdlgs.h>
CFileDialog類的成員