文件对话框(主要分为“打开”和“另存为”两种),是软件中常常会运用的辅助功能模块,可以方便使用者查看或者保存一些文件或者数据。在这一个知识点中,我们主要讨论“打开”文件的使用。
“打开”文件对话框的使用,一般要经过3个步骤,下面结合实例来说明(**完整的实例请到我的CSDN资源中下载:[http://download.csdn.net/detail/margin1988/3526058](http://download.csdn.net/detail/margin1988/3526058)**):
⑴ 定义文件对话框对象及类型
~~~
CFileDialog dlg(TRUE,"*","*.*",OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,"*.*|*.*|");
~~~
⑵ 设置文件对话框初始化目录
//第一步:**获取应用程序所在路径**
~~~
CString g_BasePath;//应用程序所在路径
char filepath[256],sDrive[256],sDir[256],sFname[256],sExt[256], pStrPath[256];
GetModuleFileName(AfxGetInstanceHandle(),filepath,256);
_tsplitpath_s(filepath,sDrive,sDir,sFname,sExt);
_tcscpy_s(pStrPath,sDrive);
_tcscat_s(pStrPath,sDir);
long nLen =_tcslen(pStrPath);
if(pStrPath[nLen-1] != '\\')
_tcscat_s(pStrPath,"\\");
g_BasePath = pStrPath;//char数组àCString
~~~
//第二步:设置文件对话框的初始化目录
~~~
dlg.m_ofn.lpstrInitialDir=_T(g_BasePath);//初始化目录|CStringàLPCSTR
~~~
⑶ 打开文件对话框和文件
~~~
if(IDOK==dlg.DoModal())//打开文件对话框
{
CString ss=dlg.GetPathName();//得到完整的文件名,包括目录名和扩展名
ShellExecute(NULL,"open",ss,NULL,NULL,SW_SHOWNORMAL);//打开文件
}
~~~
※值得注意的是,上面的程序中也包含两个重要的知识点:如何获取可执行程序所在目录的路径和如何打开一个文件。
![](https://box.kancloud.cn/2016-08-31_57c6b4a35b6f7.gif)
效果图
- 前言
- VC++中自定义热键及响应
- CFileDialog文件对话框
- VC++中客户区保存为BMP图片
- VC++读、写注册表
- VC++播放音频文件和音频数据的方法
- VC++调用Matlab编写的DLL(混合编程)
- VC++中文件读、写和其他相关操作汇总
- VC++获取系统当前时间
- VC++按钮控件字体设置
- VC++软件界面风格简单美化
- VC++中一些常用的数据类型之间的相互转化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及随机相关
- VC++中结构体的定义及使用
- VC++中List Control控件的使用方法介绍
- VC++中窗口过程函数及其消息发送、响应机制介绍
- VC++中Ribbon编程架构及SDI架构多视图切换介绍
- 串口通信基础知识及VC++实现
- VC++中单个键盘按键的响应
- VC++中的计时器及多媒体高精度计时器
- VC++编写DLL导出函数及其调用方法
- VC++对话框(CDialog)的全屏显示及控件居中显示
- VC++对话框(CDialog)添加背景图片
- VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法
- VC++对Access数据库的操作(查询、插入、更新、删除等)