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。
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;
}
轉載自:http://blog.chinaunix.net/uid-14827902-id-3058983.html