文件對話框的分類 文件對話框分為打開文件對話框和保存文件對話框,,相信大家在Windows系統(tǒng)中經(jīng)常見到這兩種文件對話框。例如,,很多編輯軟件像記事本等都有“打開”選項,,選擇“打開”后會彈出一個對話框,讓我們選擇要打開文件的路徑,,這個對話框就是打開文件對話框,;除了“打開”選項一般還會有“另存為”選項,選擇“另存為”后往往也會有一個對話框彈出,,讓我們選擇保存路徑,,這就是保存文件對話框。 正如上面舉例說明的,,打開文件對話框用于選擇要打開的文件的路徑,,保存文件對話框用來選擇要保存的文件的路徑。 文件對話框類CFileDialog MFC使用文件對話框類CFileDialog封裝了對文件對話框的操作,。CFileDialog類的構(gòu)造函數(shù)原型如下: explicit CFileDialog( 參數(shù)說明: bOpenFileDialog:指定要創(chuàng)建的文件對話框的類型,。設(shè)為TRUE將創(chuàng)建打開文件對話框,,否則將創(chuàng)建保存文件對話框。 lpszDefExt:默認的文件擴展名,。如果用戶在文件名編輯框中沒有輸入擴展名,,則由lpszDefExt指定的擴展名將被自動添加到文件名后。默認為NULL,。 lpszFileName:文件名編輯框中顯示的初始文件名,。如果為NULL,則不顯示初始文件名,。 dwFlags:文件對話框的屬性,,可以是一個值也可以是多個值的組合。關(guān)于屬性值的定義,,可以在MSDN中查找結(jié)構(gòu)體OPENFILENAME,,元素Flags的說明中包含了所有屬性值。默認為OFN_HIDEREADONLY和OFN_OVERWRITEPROMPT的組合,,OFN_HIDEREADONLY表示隱藏文件對話框上的“Read Only”復(fù)選框,,OFN_OVERWRITEPROMPT表示在保存文件對話框中如果你選擇的文件存在了,就彈出一個消息對話框,,要求確定是否要覆蓋此文件,。 lpszFilter:文件過濾器,它是由若干字符串對組成的一個字符串序列,。如果指定了文件過濾器,,則文件對話框中只有符合過濾條件的文件顯示在文件列表中待選擇。給大家看看VS2010 MSDN中給出的一個例子: static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||"); 這樣設(shè)置過濾器以后,,文件對話框的擴展名組合框中將有四個選項:Chart Files (*.xlc),、Worksheet Files (*.xls)、Data Files(*.xlc;*.xls)和All Files (*.*),,大家可以看到每種文件的擴展名規(guī)定都是一個字符串對,,例如Chart Files的過濾字符串是Chart Files(*.xlc)和*.xlc成對出現(xiàn)的。 pParentWnd:文件對話框的父窗口的指針,。 dwSize:OPENFILENAME結(jié)構(gòu)體的大小,。不同的操作系統(tǒng)對應(yīng)不同的dwSize值。MFC通過此參數(shù)決定文件對話框的適當類型(例如,,創(chuàng)建Windows 2000文件對話框還是XP文件對話框),。默認為0,表示MFC將根據(jù)程序運行的操作系統(tǒng)版本來決定使用哪種文件對話框,。 bVistaStyle:指定文件對話框的風(fēng)格,,設(shè)為TRUE則使用Vista風(fēng)格的文件對話框,否則使用舊版本的文件對話框。此參數(shù)僅在Windows Vista中編譯時適用,。 文件對話框也是模態(tài)對話框,,所以在打開時也需要調(diào)用CFileDialog類的DoModal()成員函數(shù)。在打開文件對話框中點了“打開”或者在保存文件對話框中點了“保存”以后,,我們可以使用CFileDialog類的成員函數(shù)GetPathName()獲取選擇的文件路徑,。 下面列出幾個CFileDialog類的成員函數(shù),我們可以使用它們獲得文件對話框中的各種選擇,。 GetFileExt():獲得選定文件的后綴名,。 文件對話框?qū)嵗?/strong> 根據(jù)前面所講內(nèi)容,,雞啄米給大家做個文件對話框?qū)嵗?/p> 1.創(chuàng)建一個基于對話框的MFC應(yīng)用程序工程,,名稱設(shè)為“Example17”。 2.修改主對話框IDD_EXAMPLE17_DIALOG的模板,,刪除自動生成的“TODO: Place dialog controls here.”靜態(tài)文本框,,添加兩個編輯框,ID分別為IDC_OPEN_EDIT和IDC_SAVE_EDIT,,再添加兩個按鈕,,ID分別設(shè)為IDC_OPEN_BUTTON和IDC_SAVE_BUTTON,Caption分別設(shè)為“打開”和“保存”,。按鈕IDC_OPEN_BUTTON用于顯示打開文件對話框,,編輯框IDC_OPEN_EDIT顯示在打開文件對話框中選擇的文件路徑。按鈕IDC_SAVE_BUTTON用于顯示保存文件對話框,,編輯框IDC_SAVE_BUTTON顯示在保存文件對話框中選擇的文件路徑,。 3.分別為按鈕IDC_OPEN_BUTTON和IDC_SAVE_BUTTON添加點擊消息的消息處理函數(shù)CExample17Dlg::OnBnClickedOpenButton()和CExample17Dlg::OnBnClickedSaveButton()。 4.修改兩個消息處理函數(shù)如下: C++代碼
上面顯示編輯框內(nèi)容時,雞啄米使用了Windows API函數(shù)SetDlgItemText,,當然也可以先給編輯框關(guān)聯(lián)變量,,然后再使用雞啄米在創(chuàng)建對話框類和添加控件變量中介紹的 5. 運行此程序,,在結(jié)果對話框上點“打開”按鈕,顯示打開文件對話框如下: 點“保存”按鈕后,,顯示保存文件對話框: 在打開文件對話框和保存文件對話框都選擇了文件路徑后,,主對話框如下: |
|