MFC编程之文件对话框

本文介绍了如何使用MFC在VC6.0环境下创建一个包含文件路径显示、浏览功能的对话框。通过定制对话框,设置控件属性,并添加消息响应函数,实现了文件路径的显示和浏览操作。文章还预告了下篇将讨论通过拖放文件获取路径的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明来源 : http://blog.youkuaiyun.com/enjoy5512

最近在写一个对文件进行DES加密的程序,想着能加个界面应该会好看多了,于是便想起来以前学的MFC编程
编译环境 Windows XP SP2 + VC6.0


1 . 新建一个MFC对话框(除了图中圈出来的地方要注意之外,其他的默认就行)
这里写图片描述

这里写图片描述

这里写图片描述


2 . 然后将原来的对话框上面的确定,取消按钮和静态文本框删除,在右边的工具栏里
添加一个静态文本框,ID设为IDC_STATIC_PATH,标题改为文件路径.
添加一个编辑框,ID设为IDC_EDIT_PATH,在样式里设置只读属性,扩展样式选择从右到左读取,这样对于文件路径太长的也能看到文件名
添加一个按钮,ID设为IDC_BUTTON_PATH,标题改成浏览
最终效果如下:
这里写图片描述


3 . 到此为止,我们的界面就做好了,然后就是添加消息响应函数了
双击浏览按钮,根据提示添加按钮点击消息响应函数,然后就跳转到下面的函数里,在这里,我们添加消息响应函数的实现代码
这里写图片描述

响应函数的代码如下:

void CDesDlg::OnButtonOpen() 
{
    // TODO: Add your control notification handler code here
    CString szFilePath = L"";                       //保存文件路径

    CFileDialog CcmFileOpenDlg(TRUE,NULL,NULL,NULL,NULL,NULL);  //获取打开文件对话框的类

    if (IDOK == CcmFileOpenDlg.DoModal())           //文件选择对话框
    {
        szFilePath = CcmFileOpenDlg.GetPathName();  //获取文件路径
        SetDlgItemText(IDC_EDIT_PATH,szFilePath);   //设置EDIT框的值
    }
}

运行结果图:
这里写图片描述

运行结果


附关键函数解析(摘自百度百科):

CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。

语法

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   是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。
pParentWnd   为父窗口指针。

构造函数

CFileDialog  构造一个CFileDialog对象操作
DoModal      显示对话框并使用户可以进行选择
GetPathName  返回选定文件的完整路径
GetFileName  返回选定文件的文件名
GetFileExt   返回选定文件的扩展文件名
GetFileTitle 返回选定文件的标题
GetNextPathName 返回下一个选定文件的完整路径
GetReadOnlyPref 返回选定文件的只读状态
GetStartPosition返回文件名列表的第一个元素位置
可覆盖的函数
OnShareViolation 发生共享冲突时调用
OnFileNameOK     确认键入对话框中的文件名
OnLBSelChangedNotify 当列表框选择改变时调用
OnInitDone        处理WM_NOTIFY CDN_INITDONE消息
OnFileNameChange  处理WM_NOTIFY CDN_SELCHANGE消息
OnFolderChange   处理WM_NOTIFY CDN_FOLDERCHANGE消息
OnTypeChange     处理WM_NOTIFY CDN_TYPECHANGE消息

文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下:
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 为父窗口指针。

成员函数

创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:
CString CFileDialog::GetPathName( )  得到完整的文件名,包括目录名和扩展名如:c:\ test\ test1.txt
CString CFileDialog::GetFileName( )  得到完整的文件名,包括扩展名如:test1.txt
CString CFileDialog::GetFileExt( )   得到完整的文件扩展名,如:txt
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1
POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。

下一篇将介绍怎么通过拖动文件到对话框,直接获取文件的路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值