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 是最重要的一個參數,它指明可供選擇的文件類型和相應的擴展名。參數格式如:
因爲vs 2005之後項目使用的是unicode字符集,所以如果直接強制類型轉換爲LPCTSTR, 運行會發現文件類型處顯示爲亂碼,可以在“項目-屬性”中將"unicode字符集"換成"多字節字符集"就行了,也可以將文本內容放在_T()裏面,不變字符集
第六個參數 pParentWnd爲父窗口指針, 一般可選NULL。
下面給出示例代碼:
-
void CMyDialog::OnBnClickedOpennc()
-
{
-
// TODO: 在此添加控件通知處理程序代碼
-
CString FilePathName;
-
CFileDialog dlg(TRUE, //TRUE爲OPEN對話框,FALSE爲SAVE
AS對話框
-
NULL,
-
NULL,
-
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
-
(LPCTSTR)_TEXT("JPG
Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"),
-
NULL);
-
if(dlg.DoModal()==IDOK)
-
{
-
FilePathName=dlg.GetPathName(); //文件名保存在了FilePathName裏
-
}
- else
- {
- return;
- }
- }