第一种方法
代码如下
void OnBtnOpenFolder()
{
CString m_XmlFile1;
CString filter;
filter=L"文本文档(*.xml)|*.xml|所有文件(*.*)|*.*|";
/**
* @brief explicit CFileDialog(Call this function to construct a standard Windows file dialog box.)
*
* @Function CFileDialog的构造函数
*
* @param[ _In_ ] BOOL bOpenFileDialog
*
* @param[ _In_ ] LPCTSTR lpszDefExt = NULL
*
* @param[ _In_ ] LPCTSTR lpszFileName = NULL
*
* @param[ _In_ ] DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
*
* @param[ _In_ ] LPCTSTR lpszFilter = NULL
*
* @param[ _In_ ] CWnd* pParentWnd = NULL
*
* @param[ _In_ ] DWORD dwSize = 0
*
* @param[ _In_ ] BOOL bVistaStyle = TRUE
*
* @return
*
* @Date xzm_@_2017/06/30 13:40:11
*/
CFileDialog dlg(TRUE,NULL,NULL,
// OFN_HIDEREADONLY | //打开的文件夹总,看不见已经具有只读属性的文件
OFN_FILEMUSTEXIST |
OFN_SHAREAWARE |
OFN_PATHMUSTEXIST,
filter);
if(dlg.DoModal()==IDOK)
{
m_XmlFile1 = m_strDbName = dlg.GetPathName();
UpdateData(FALSE);
}
}
CFileDialog构造函数的参数解释
explicit CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL, DWORD dwSize = 0, BOOL bVistaStyle = TRUE);参数说明
- bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。
- lpszDefExt 指定默认的文件扩展名。
- lpszFileName 指定默认的文件名。
- dwFlags 指明一些特定风格。
- lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:
文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
dwFlags的一些说明
num | Value | Meaning |
1 | OFN_ALLOWMULTISELECT 0x00000200 | |
2 | OFN_CREATEPROMPT 0x00002000 | |
3 | OFN_DONTADDTORECENT 0x02000000 | |
4 | OFN_ENABLEHOOK 0x00000020 | |
5 | OFN_ENABLEINCLUDENOTIFY 0x00400000 | |
6 | OFN_ENABLESIZING 0x00800000 | |
7 | OFN_ENABLETEMPLATE 0x00000040 | |
8 | OFN_ENABLETEMPLATEHANDLE 0x00000080 | |
9 | OFN_EXPLORER 0x00080000 | |
10 | OFN_EXTENSIONDIFFERENT 0x00000400 | |
11 | OFN_FILEMUSTEXIST 0x00001000 | |
12 | OFN_FORCESHOWHIDDEN 0x10000000 | 强制显示系统和隐藏文件,从而覆盖用户设置以显示或不显示隐藏文件。但是,没有显示标记为系统和隐藏的文件。 |
13 | OFN_HIDEREADONLY 0x00000004 | 隐藏只读复选框 |
14 | OFN_LONGNAMES 0x00200000 | |
15 | OFN_NOCHANGEDIR 0x00000008 | |
16 | OFN_NODEREFERENCELINKS 0x00100000 | |
17 | OFN_NOLONGNAMES 0x00040000 | |
18 | OFN_NONETWORKBUTTON 0x00020000 | 隐藏并禁用网络按钮。 |
19 | OFN_NOREADONLYRETURN 0x00008000 | |
20 | OFN_NOTESTFILECREATE 0x00010000 | |
21 | OFN_NOVALIDATE 0x00000100 | |
22 | OFN_OVERWRITEPROMPT 0x00000002 | |
23 | OFN_PATHMUSTEXIST 0x00000800 | |
24 | OFN_READONLY 0x00000001 | |
25 | OFN_SHAREAWARE 0x00004000 | |
26 | OFN_SHOWHELP 0x00000010 | |