CFileDialog的使用說明

CFileDialog構造函數
 
1 CFileDialog:CFileDialog(BOOL    bOpenFileDialog,
2 LPCTSTR    lpszDefExt=NULL,
3 LPCTSTR    lpszFileName=NULL,
4 DWORD    dwFlags     =     OFN_HIDEREADONLY     |     OFN_OVERWRITEPROMPT,
5 LPCTSTR    lpszFilter=NULL,
6 CWnd     *     pParentWnd=NULL);

bOpenFileDialog:TRUE爲打開文件對話框;FALSE爲保存文件對話框

lpszDefExt:缺省的擴展名

lpszFileName:缺省顯示在文件名組合框的編輯框的文件名,一般可選NULL

dwFlags:對話框風格,一般爲OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 即隱藏只讀選項和覆蓋已有文件前提示。

類型:

    OFN_HIDEREADONLY:隱藏只讀選項

    OFN_OVERWRITEPROMPT:覆蓋已有文件前提

    OFN_ALLOWMULTISELECT:允許選擇多個文件

    OFN_CREATEPROMPT:如果輸入的文件名不存在,則對話框返回詢問用戶是否根據次文件名創建文件的消息框

    OFN_FILEMUSTEXIST:只能輸入已存在的文件名

    OFN_FORCESHOWHIDDEN:可以顯示隱藏的文件

    OFN_NOREADONLYRETURN:不返回只讀文件

   OFN_OVERWRITEPROMPT:保存的文件已存在時,顯示文件已存在的信息

lpszFilter:文件篩選類型,它指明可供選擇的文件類型和相應的擴展名。參數格式如:
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件類型說明和擴展名間用 | 分隔,同種類型文件的擴展名間可以用 ; 分割,每種文件類型間用 | 分隔,末尾用 || 指明。

pParentWnd:父窗口指針,一般可選NULL.

2、對話框選項常用屬性(實例:dialog)

dialog.m_ofn.lpstrTitle:顯示窗口標題。

dialog.m_ofn.lpstrInitialDir:初始化展開路徑。

dlg.m_ofn.lpstrFile:默認文件

dlg.m_ofn.lpstrFilter:文件篩選類型,注意與lpszFilter區別,要用"\0",不能用"|"

如:dlg.m_ofn.lpstrFilter="所有文件\0*.*\0圖像文件\0*.jpg;*.bmp;*.gif\0\0";

3、對話框常用方法

INT_PTR CFileDialog::DoModal() 顯示文件操作對話框,常用返回值:IDOK,點擊了打開確定操作 IDCANCEL,取消 

CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目錄名和擴展名如:c:\test\test.txt。注,多文件選擇時返回目錄名

CString CFileDialog::GetFileName( ) 得到完整的文件名,包括擴展名如:test.txt

CString CFileDialog::GetExtName( ) 得到完整的文件擴展名,如:txt

CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目錄名和擴展名如:test

POSITION CFileDialog::GetStartPosition( ) 對於選擇了多個文件的情況得到第一個文件位置。

CString CFileDialog::GetNextPathName( POSITION& pos ) 對於選擇了多個文件的情況得到下一個文件位置,並同時返回當前文件名。但必須已經調用過POSITION CFileDialog::GetStartPosition( )來得到最初的POSITION變量。

4、示例——多文件打開操作,獲取文件名以“;”分開

01 //本代碼測試環境VS2008 c++ MFC
02 CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
03     NULL, this);
04   
05     dlg.m_ofn.lpstrInitialDir = (BSTR)directoryName;  //設置對話框默認呈現的路徑
06       
07     CString strFilePath;
08     if(dlg.DoModal() == IDOK)
09     {
10          CArray<CString, CString> aryFilename;
11          POSITION posFile=dlg.GetStartPosition();
12          while(posFile!=NULL)
13          {
14     aryFilename.Add(dlg.GetNextPathName(posFile));
15          }
16          for(int i=0;i<aryFilename.GetSize();i++)
17         {
18     if(strFilePath.GetLength()>0)
19             {
20         strFilePath.AppendChar(';');//多個文件‘;’分開
21     }
22     strFilePath+= aryFilename.GetAt(i);
23         }
24     }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章