MFC打開對話框

CFileDialog類封裝了Windows常用的文件對話框。常用的文件對話框提供了一種簡單的與Windows標準相一致的文件打開和文件存盤對話框功能。
CFileDialog的語法:

CFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt=NULL,
LPCTSTR lpszFileName=NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter=NULL,
CWnd * pParentWnd=NULL); 

第一個參數 bOpenFileDialog爲TRUE或FALSE。TRUE爲打開文件;FALSE爲保存文件。 
第二個參數 lpszDefExt爲缺省的擴展名。 
第三個參數 lpszFileName爲顯示在文件名組合框的編輯框的文件名,一般可選NULL 
第四個參數 dwFlags爲對話框風格,一般爲OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 即隱藏只讀選項和覆蓋已有文件前提示。

OFN_ALLOWMULTISELECT:允許選擇多個文件

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

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

OFN_FORCESHOWHIDDEN:可以顯示隱藏的文件

OFN_NOREADONLYRETURN:不返回只讀文件

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


第五個參數 LpszFilter爲下拉列表樞中顯示文件類型。 

     lpszFilter 是最重要的一個參數,它指明可供選擇的文件類型和相應的擴展名。參數格式如:

  "JPG Files (*.jpg)|*.jpg|All Files (*.*)|*.*||";文件類型說明和擴展名間用 | 分隔,同種類型文件的擴展名間可以用 ; 分割,每種文件類型間用 | 分隔,末尾用 || 指明。 

    因爲vs 2005之後項目使用的是unicode字符集,所以如果直接強制類型轉換爲LPCTSTR, 運行會發現文件類型處顯示爲亂碼,可以在“項目-屬性”中將"unicode字符集"換成"多字節字符集"就行了,也可以將文本內容放在_T()裏面,不變字符集


第六個參數 pParentWnd爲父窗口指針, 一般可選NULL。


下面給出示例代碼:

  1. void CMyDialog::OnBnClickedOpennc()
  2. {
  3.     // TODO: 在此添加控件通知處理程序代碼
  4.     CString FilePathName;
  5.     CFileDialog dlg(TRUE, //TRUE爲OPEN對話框,FALSE爲SAVE AS對話框
  6.         NULL, 
  7.         NULL,
  8.         OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  9.         (LPCTSTR)_TEXT("JPG Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"),
  10.         NULL);
  11.     if(dlg.DoModal()==IDOK)
  12.     {
  13.         FilePathName=dlg.GetPathName(); //文件名保存在了FilePathName裏
  14.     }
  15.     else
  16.     {
  17.          return;
  18.     }
  19. }

發佈了28 篇原創文章 · 獲贊 7 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章