关于打开文件夹函数的用法 OpenFileDialog(转载)

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 为父窗口指针。

创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:

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

[一些小心得]

例:

CFileDialog GetFile(TRUE,NULL,NULL,OFN_FILEMUSTEXIST,"Microsoft Excel(*.xls)|*.xls|All Files(*.*)|*.*");

CFileDialog GetFile(打开文件对话框(TRUE),扩展名(NULL),文件名(NULL),风格-文件必须存在(OFN_FILEMUSTEXIST),查看文件类型-EXCEL文件,所有文件(Microsoft Excel(*.xls)|*.xls|All Files(*.*)|*.*);

风格的宏定义

#define OFN_READONLY                 0x00000001

#define OFN_OVERWRITEPROMPT          0x00000002

#define OFN_HIDEREADONLY             0x00000004

#define OFN_NOCHANGEDIR              0x00000008

#define OFN_SHOWHELP                 0x00000010

#define OFN_ENABLEHOOK               0x00000020

#define OFN_ENABLETEMPLATE           0x00000040

#define OFN_ENABLETEMPLATEHANDLE     0x00000080

#define OFN_NOVALIDATE               0x00000100

#define OFN_ALLOWMULTISELECT         0x00000200

#define OFN_EXTENSIONDIFFERENT       0x00000400

#define OFN_PATHMUSTEXIST            0x00000800

#define OFN_FILEMUSTEXIST            0x00001000

#define OFN_CREATEPROMPT             0x00002000

#define OFN_SHAREAWARE               0x00004000

#define OFN_NOREADONLYRETURN         0x00008000

#define OFN_NOTESTFILECREATE         0x00010000

#define OFN_NONETWORKBUTTON          0x00020000

#define OFN_NOLONGNAMES              0x00040000     // force no long names for 4.x modules

#if(WINVER >= 0x0400)

#define OFN_EXPLORER                 0x00080000     // new look commdlg

#define OFN_NODEREFERENCELINKS       0x00100000

#define OFN_LONGNAMES                0x00200000     // force long names for 3.x modules

#define OFN_ENABLEINCLUDENOTIFY      0x00400000     // send include message to callback

#define OFN_ENABLESIZING             0x00800000

#endif

#if (_WIN32_WINNT >= 0x0500)

#define OFN_DONTADDTORECENT          0x02000000

#define OFN_FORCESHOWHIDDEN          0x10000000    // Show All files including System and hidden files

#endif // (_WIN32_WINNT >= 0x0500)

需要注意的是,用了CFileDialog之后,会把程序的当前路径设置成选中文件的路径;

所以,如果程序里有用到IO访问或者数据库访问之类的本地操作时,需要注意你的当前路径用相对路径的话就不是原来你的程序路径了,切记!

关于打开文件夹函数的用法 OpenFileDialog(转载)

时间: 2024-10-12 09:01:49

关于打开文件夹函数的用法 OpenFileDialog(转载)的相关文章

C# 打开文件夹窗口 存取文件路径

OpenFileDialog file1 = new OpenFileDialog(); if (Properties.Settings.Default.path1!= "" && Properties.Settings.Default.path1 != null) { file1.InitialDirectory = Properties.Settings.Default.path1; //设置打开文件的路径 } file1.ShowDialog();//打开文件夹

mint/ubuntu 在终端 / Shell中 打开文件夹

我知道的有两种方法, 都是命令后面加路径(nautilus|pcmanfm dir_path) 方法一: 使用 nautilus 安装:sudo apt-get intstall nautilus 效果:nautilus ~ 方法二: 使用 pcmanfm 安装:sudo apt-get intstall pcmanfm 效果:pcmanfm ~ 不过这两种方法都让我有点不爽,因为和原生系统的不一样,还有一点慢, 现在还可以忍,如果你有更好的方法请留言.(原生系统如下) mint/ubuntu

Windows 8.1 文件资源管理器 打开文件夹缓慢,显示文件夹为空,进度条一直加载的解决办法

背景 刚安装了系统,然后进行了Windows Update更新,安装常用软件.发现Windows文件管理器打开文件夹变慢,图标变白,一直加载文件夹内容等问题.各种尝试,终于解决了这个问题. 原因 在我遇到的问题中,发现Windows Search服务是处于关闭状态的.尝试手动打开时,弹出错误窗口,提示无法打开,提示内容为 “无法找到元素”.问题就出在Windows Search服务无法打开.这样Windows是无法正常创建文件索引的.所以出现了打开文件夹缓慢的情况. 解决 在网上查找资料后,找到

VS15 preview 5打开文件夹自动生成slnx.VC.db SQLite库疑惑?求解答

用VS15 preview 5打开文件夹(详情查看博客http://www.cnblogs.com/zsy/p/5962242.html中配置),文件夹下多一个slnx.VC.db文件,如下图: 本文件是SQLite文件,通过Navicat Premium打开,配置如下: 打开如下: 一共有14张数据表.其中以下3张表有数据: 各个表与字段含义,从官网也没有找到相关解释,还有待考证:其中个别表可以从命名来理解,例如properties,表示属性.有知情者请告诉一二,如向本人获取Navicat P

利用注册表在右键添加VS15的快捷方式打开文件夹

1.简介 最近安装VS15 Preview 5,本版本可以打开"文件夹" 是否可以向Visual Studio Code一样在文件夹或文件右键菜单添加"Open with Code",答案是当然可以的. 2.打开文件 1.Win+R 打开运行,输入regedit,打开注册表,找到HKEY_CLASSES_ROOT\*\shell分支,如果没有shell分支,则在*下点击右键,选择"新建-项",建立shell分支. 2.在shell下新建"

Windows资源管理器打开文件夹卡顿原因及解决办法

全新安装的 Win8 打开文件夹居然会卡顿,特别是打开EXE程序比较多的文件夹,通过资源监视器查看,幕后凶手就是 Windows Defender 杀毒软件. MSE是微软提供防毒功能,而Windows Defender则是为用户提供反间谍功能,Win8已经把这两个功能合二为一了.用过MSE的用户就知道它有卡EXE的毛病,在Win8中也是这样,当你打开EXE程序.压缩包比较多的文件夹,它就一直扫描啊扫描-..所以MSE很忙-.. 解决方法: 先用Windows Defender全盘扫描,然后可以

fedora 打开文件夹的方式

最近发现拿到别人的虚拟机使用后,每次打开一个文件夹就出来一个窗口,如果不关闭就越来越多.整的眼花缭乱,和我的虚拟机打开文件夹的方式大不同 很是不习惯. 下图为未改设置前,会打开一堆的窗口. 而且要回到上一级目录很是不方便,于是得修改其文件夹显示的行为,如下图 选择 "文件管理" 设置ok,随后看到的效果如下图:

打开文件夹

备忘.非原创.仅测试于Windows7系统. 最后更改时间:2016年9月23日 17:52:56 本文介绍如何通过运行命令打开文件夹. 1.“explorer.exe /select,add” 说明:add是文件的绝对地址.比如“C:\WINDOWS\system\clac.exe”. 效果:打开它所在的文件夹.选中这个文件. 要求:文件必须存在,否则打开的文件夹可能不是该文件所在的文件夹. 其它:在这个文件夹已经打开的情况下,仍然可以再打开相同的一个. 2.“explorer.exe /n,

CFileDialog 打开文件夹文件 保存文件夹文件

格式说明: explicit CFileDialog( BOOL bOpenFileDialog,                         //TRUE 为打开, FALSE 为保存 LPCTSTR lpszDefExt = NULL,                 // 默认文件扩展名 LPCTSTR lpszFileName = NULL,            //文件对话框中 初始的文件名称 DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVER