在 MFC(Microsoft Foundation Classes)中,CFileDialog 是用于显示文件对话框的类。CFileDialog 的构造函数有多个重载,其中一个常用的形式如下:
CFileDialog(
   BOOL bOpenFileDialog,
   LPCTSTR lpszDefExt = NULL,
   LPCTSTR lpszFileName = NULL,
   DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
   LPCTSTR lpszFilter = NULL,
   CWnd* pParentWnd = NULL,
   DWORD dwSize = 0
);

这个构造函数用于创建文件对话框对象,并设置一些基本的参数。下面是参数的说明:

  •  bOpenFileDialog:一个 BOOL 类型的参数,用于指定是打开文件对话框 (TRUE) 还是保存文件对话框 (FALSE)。

  •  lpszDefExt:一个可选的字符串参数,用于指定默认的文件扩展名。

  •  lpszFileName:一个可选的字符串参数,用于指定默认的文件名。

  •  dwFlags:一个 DWORD 类型的参数,用于指定对话框的标志。默认情况下,设置了隐藏只读文件 (OFN_HIDEREADONLY) 和覆盖提示 (OFN_OVERWRITEPROMPT)。

  •  lpszFilter:一个可选的字符串参数,用于指定文件筛选器,例如 "Text Files (*.txt)|*.txt|All Files (*.*)|*.*|"。

  •  pParentWnd:一个可选的 CWnd* 类型参数,用于指定文件对话框的父窗口。

  •  dwSize:一个可选的 DWORD 类型参数,用于指定结构的大小。默认值为 0。


以下是一个简单的例子,演示如何使用 CFileDialog 构造函数创建一个打开文件对话框:
#include <afxdlgs.h>

void OpenFileDlgExample(CWnd* pParentWnd) {
   // 创建文件对话框对象
   CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"), pParentWnd);

   // 显示文件对话框
   if (fileDlg.DoModal() == IDOK) {
      // 获取选定的文件路径
      CString filePath = fileDlg.GetPathName();
      TRACE(_T("Selected file: %s\n"), filePath);
   } else {
      TRACE(_T("File dialog canceled.\n"));
   }
}

在这个例子中,OpenFileDlgExample 函数创建一个打开文件对话框,设置了文件筛选器,然后显示对话框。如果用户选择了文件并点击了确定按钮,将输出选定的文件路径。如果用户取消对话框,将输出相应的调试信息。请注意,这里使用了 TRACE 宏来输出调试信息,确保你的项目设置中启用了 MFC 的调试支持。


转载请注明出处:http://www.zyzy.cn/article/detail/17737/MFC/CFileDialog