- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC CFileDialog文件选择对话框的使用
MFC CFileDialog的使用方法
概要
CFileDialog类封装了Windows的通用文件对话框。
通用文件对话框提供了一种简单的方法实现文件打开或文件保存对话框(或其他类型的文件选择对话框),在某种程度上它属于Windows的标准。
用户可以直接使用CFileDialog原有的构造函数,也可以根据自己的需要从CFileDialog派生出一个的对话框类,并编写构造函数。无论采用哪种方法,这些对话框都可以当作标准MFC对话框类来使用。因为它们都是CCommonDialog类的派生类。
要使用CFileDialog对象,首先需要使用CFileDialog的构造函数构造创建一个对象,然后用户就可以设置或修改m_ofn结构中的变量值,来初始化对话框控件的值或状态。m_ofn结构是OPENFILENAME类型的。
初始化对话框后,调用DoModal函数,则会显示一个允许用户输入路径和文件的对话框。用户单击OK或CANCEL按钮后,DoModal返回,返回值为IDOK或IDCANCEL。
如果DoModal返回IDOK,用户就可以使用CFileDialog的公共成员函数获取用户输入的相关信息。
CFileDialog包含几个受保护的成员函数,这些函数使用户可以自定义操作函数来处理共享冲突、文件名合法性和列表框改变通知。这些保护成员对许多程序来说用处不大,因为缺省的操作函数是自动执行的。对这些函数来说,消息映射入口也是不必要的,因为它们是标准虚函数。
用户可以使用Windows的CommDlgExtendError函数判断对话框在初始化时是否发生错误,并获取关于错误的更多信息。
CFileDialog对象的析构操作是自动完成的,无须调用CDialog::EndDialog。
在调用DoModal之前设置OFN_ALLOWMULTISELECT标志,可以使用户能够选择多个文件。而你则需要提供一个文件名缓冲区来放置文件名列表,即在创建CFileDialog之后,调用DoModal之前,申请一块缓冲区并将其地址赋值给m_ofn.lpstrFile。
当用户申请内存来放置文件名列表时,申请的内存大小不能超过2048,否则程序就会崩溃。
另外,必须用m_ofn.lpstrFile指向的缓冲区字节数来设置m_ofn.nMaxFile。
构造和创建
CFileDialog的构造函数原型如下:
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则显示保存对话文件对话框。 lpszDefExt 指定默认的文件扩展名。 lpszFileName 指定默认的文件名。 dwFlags 指明一些特定风格。 lpszFilter 最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:
Chart Files *.xlc |*.xlc|Worksheet Files *.xls |*.xls|Data Files *.xlc;*.xls |*.xlc; *.xls|All Files *.* |*.*||;
文件类型说明和扩展名间用‘|’分隔,同种类型文件的扩展名间可以用‘;’分割,每种文件类型间用‘|’分隔,末尾用‘||’指明。 pParentWnd 为父窗口指针。 除了可以通过构造函数设置对话框属性外,还可以通过修改成员变量m_ofn来设置对话框属性。m_ofn结构是OPENFILENAME类型,其声明原型如下:
typedef struct tagOFN DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCTSTR lpstrFilter;
LPTSTR lpstrCustomFilter;
DWORD nMaxCustFilter;
DWORD nFilterIndex;
LPTSTR lpstrFile;
DWORD nMaxFile;
LPTSTR lpstrFileTitle;
DWORD nMaxFileTitle;
LPCTSTR lpstrInitialDir;
LPCTSTR lpstrTitle;
DWORD F
文档评论(0)