一、函数原型
CFileDialog::CFileDialog(BOOL bOpenFileDialog, //TRUE则打开文件,为FALSE保存文件
LPCTSTR lpszDefExt = NULL, //指定默认的文件扩展名。
LPCTSTR lpszFileName = NULL,//指定默认的文件名
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, //指明一些特定风格
LPCTSTR lpszFilter = NULL, //指明可供选择的文件类型和相应的扩展名
CWnd* pParentWnd = NULL,
DWORD dwSize = 0,
BOOL bVistaStyle = TRUE);
lpszFilter 的格式:如:_T("JPEG/BMP/GIF(*.jpg;*.jpeg;*.bmp;*.gif)|*.jpg;*.jpeg;*.bmp;*.gif|")
文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
二、成员介绍
1、打开窗口
INT_PTR DoModal() //打开窗口,返回结果为TRUE表示打开成功
2、获得文件信息
CString GetPathName() //获取某路径下的文件名 如:D:\C\test\name.jpg
CString GetFolderPath() //获得路径 如:D:\C\test
CString GetFileTitle(); //获得文件名 如:name
CString GetFileExt(); //获得格式 如:jpg
3、遍历整个文件夹:
POSITION GetStartPosition() const; //选择第一个迭代器
CString GetNextPathName() const; //获得该路径的文件名
4、编辑默认的窗口
(1)、Menu
添加:返回S_OK如果成功,或者一个错误值
HRESULT AddMenu(DWORD dwIDCtl, //ID
const CString& strLabel); //名称
(2)、PushButton
添加一个PushButton:返回S_OK如果成功,或者一个错误值
HRESULT AddPushButton(DWORD dwIDCtl, //ID
const CString& strLabel); //名称
(3)、ComboBox
添加一个ComboBox:返回S_OK如果成功,或者一个错误值
HRESULT AddComboBox(DWORD dwIDCtl);//ID
(4)、RadioButtonList
添加一个RadioButtonList:返回S_OK如果成功,或者一个错误值
HRESULT AddRadioButtonList(DWORD dwIDCtl);//ID
(5)、CheckButton
添加一个CheckButton:返回S_OK如果成功,或者一个错误值
HRESULT AddCheckButton(DWORD dwIDCtl, //ID
const CString& strLabel, //名称
BOOL bChecked); //当前状态
获得CheckButton的状态:返回S_OK如果成功,或者一个错误值
HRESULT GetCheckButtonState(DWORD dwIDCtl, //ID
BOOL& bChecked); //状态 TRUE FALSE
设置CheckButton的状态:返回S_OK如果成功,或者一个错误值
HRESULT SetCheckButtonState(DWORD dwIDCtl, //ID
BOOL bChecked);//需要设置的状态 TRUE FALSE
(6)、EditBox
添加一个EditBox:返回S_OK如果成功,或者一个错误值
HRESULT AddEditBox(DWORD dwIDCtl, //ID
const CString& strText);//名称
获得EditBox中的文本:返回S_OK如果成功,或者一个错误值
HRESULT GetEditBoxText(DWORD dwIDCtl, //ID
CString& strText);//EditBox中的内容
设置EditBox中的文本:返回S_OK如果成功,或者一个错误值
HRESULT SetEditBoxText(DWORD dwIDCtl, //ID
const CString& strText);//要设置的内容
(7)、Text
添加一个Text:返回S_OK如果成功,或者一个错误值
HRESULT AddText(DWORD dwIDCtl, //ID
const CString& strText);//名称
三、具体实例
//PStaic:方法:GetDlgItem(IDC) //截取控件的ID
void XXXX::Save(CWnd* pStaic)
{
CString Path, Name, Form;
CFileDialog dlg(FALSE, NULL, NULL, OFN_NOCHANGEDIR, _T("*.jpg; *.jpeg; *.bmp; *.gif | *.jpg;*.jpeg ;*.bmp ;*.gif|"));
int iReturn = dlg.DoModal();
if (iReturn == IDOK)
{
Path = dlg.GetFolderPath()+"\\"; //获得文件路径
Name = dlg.GetFileTitle(); //获得文件名
Form = "."+dlg.GetFileExt(); //获得格式
if (Form == "." || (!(Form == ".jpg" || Form == ".jpeg" || Form == ".bmp" || Form == ".gif"))){ //判断文件格式是否正确
AfxMessageBox(_T("请输入正确的文件格式!"), MB_ICONQUESTION | MB_OK);
SaveImage(pStaic); //回调
}
}
}