getopenfilename多选文件/文件夹问题和getsavefilename另存为路径
关于使用getopenfilename多选多个文件是可以的。
以下是多选文件的代码
bool GetNeedOpenFilePath(vector<tstring>& vectFiles, HWND hwnd )
{
OPENFILENAME ofn;
TCHAR szOpenFileNames[*MAX_PATH] = {};
TCHAR szPath[MAX_PATH];
TCHAR szFileName[*MAX_PATH]; int nLen = ;
TCHAR* p = NULL;
ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
//ofn.hInstance = (HMODULE)GetCurrentProcess();
ofn.lpstrFile = szOpenFileNames;
ofn.nMaxFile = sizeof(szOpenFileNames);
ofn.lpstrFile[] = _T('\0');
ofn.lpstrFilter = _T("All Files(*.*)\0*.*\0\0");
ofn.nFilterIndex = ;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = ;
ofn.lpstrTitle = I18NSTR(L"#IDS_FILESYSTEM_OPEN_FILE_DIR");
ofn.Flags = OFN_ENABLESIZING | OFN_FILEMUSTEXIST| OFN_ALLOWMULTISELECT| OFN_HIDEREADONLY /*| OFN_ENABLEHOOK *//*| OFN_ENABLEINCLUDENOTIFY*/| OFN_EXPLORER;
//ofn.lpfnHook = OFNHookProc;
if (!::GetOpenFileName(&ofn)) //如果打开文件失败,则不操作
{
return false;
} //把第一个文件名前的复制到szPath,即:
//如果只选了一个文件,就复制到最后一个'/'
//如果选了多个文件,就复制到第一个NULL字符
lstrcpyn(szPath,szOpenFileNames,ofn.nFileOffset); //当只选了一个文件时,下面这个NULL字符是必需的.
//这里不区别对待选了一个和多个文件的情况 szPath[ofn.nFileOffset] = '\0';
nLen = lstrlen(szPath);
if (szPath[nLen-] != '\\') //如果选了多个文件,则必须加上'//'
{
lstrcat(szPath,_T("\\"));
} p = szOpenFileNames + ofn.nFileOffset; //把指针移到第一个文件
ZeroMemory(szFileName, sizeof(szFileName)); while(*p)
{
//lstrcat(szFileName, szPath); //给文件名加上路径
//lstrcat(szFileName, p); //加上文件名
tstring tstrFile = _UTILITY::TCHARToUnicode(p);
tstring tstrFilePath = szPath;
tstrFilePath += tstrFile;
vectFiles.push_back(tstrFilePath);
//lstrcat(szFileName, _T("\n")); //换行
p += lstrlen(p) + ; //移至下一个文件
} return true;
}
但是关于使用getopenfilename()函数获取多选文件夹的路径问题,需要自定义一些模板资源。具体实现方式还需研究下。
使用getsavefilename()函数可以获取另存为路径:
bool GetSaveAsFilePath(tstring tstrFilePath, HWND hwnd)
{
OPENFILENAME ofn;
TCHAR szOpenFileNames[*MAX_PATH] = {};
TCHAR szPath[MAX_PATH];
TCHAR szFileName[*MAX_PATH]; int nLen = ;
TCHAR* p = NULL;
ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
//ofn.hInstance = (HMODULE)GetCurrentProcess();
ofn.lpstrFile = szOpenFileNames;
ofn.nMaxFile = sizeof(szOpenFileNames);
ofn.lpstrFile[] = _T('\0');
ofn.lpstrFilter = _T("All Files(*.*)\0*.*\0\0");
ofn.nFilterIndex = ;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = ;
ofn.lpstrTitle = I18NSTR(L"#IDS_FILESYSTEM_SAVE_AS");
ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_EXPLORER;
ofn.FlagsEx = OFN_EX_NOPLACESBAR;
//ofn.lpfnHook = OFNHookProc;
if (!::GetSaveFileName(&ofn)) //如果打开文件失败,则不操作
{
return false;
} tstrFilePath = ofn.lpstrFile;
return true;
}
getopenfilename多选文件/文件夹问题和getsavefilename另存为路径的更多相关文章
- Android文件/文件夹选择器(支持多选操作),已封装为lib库,直接添加依赖即可。
话不多少,先上图一览: 接下来我们开始写个app测试: 1.新建Android工程:FileSelectorTest 2.更改MainActivity: 在里面写四个textview模拟button, ...
- Elicpse使用技巧-打开选中文件文件夹或者包的当前目录
很多时候,我们需要在eclipse那里打开选中文件(文件夹,包)的当前目录,在资源管理器那里显示这个目录,这个时候,我们又不想采用“选中文件/文件夹/包名--右击--Properties--Locat ...
- Eclipse 中打开选中文件/文件夹所在目录
习惯了使用VS中的 ”通过右键打开选中文件/文件夹在电脑中的目录”功能后, 当切换到Eclipse环境后,发现居然找不到这个功能, 虽可以通过右键文件属性,看到文件路径,复制路径然后在资源管理器中打开 ...
- NSFileManager计算文件/文件夹大小
在一些软件中,一般都会给用户展现当前APP的内存,同时用户可以根据自己的需要来清除缓存的内容.一般而言,文件夹是没有大小这个属性的,所以需要遍历文件夹的内容来计算文件夹的大小,下面用NSFileMan ...
- linux下SVN忽略文件/文件夹的方法
linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录) ...
- 【SVN】删除文件/文件夹 svn: E205007: Could not use external editor to fetch log message
在SVN Server上删除文件/文件夹 svn delete 文件的URL -m "评论" 一定要加 -m 不然会报错 svn: E205007: Could not use e ...
- Linux中RM快速删除大量文件/文件夹方法
昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./* 删除时间慢到不可接受.Google了一下,查到了一种方法,试用了下确实比 ...
- 当IIS挂的网站出现选 图片文件, 静态文件都打不开时, 可以试试新建一个应用程序池试试看...
当IIS挂的网站出现选 图片文件, 静态文件都打不开时, 可以试试新建一个应用程序池试试看...
- linux压缩文件(夹) zip uzip命令的用法
压缩文件(夹) # 压缩列举的文件,格式如下: zip 压缩包名称 文件1 文件2 文件3 ... # 压缩test.txt, a.out文件,并取名为abc.zip $ zip abc.zip te ...
随机推荐
- Mac和Linux下pip更换源
cd ~mkdir .pip vim .pip/pip.conf 在pip.conf中写入 [global]timeout = 6000index-url = https://pypi.tuna.ts ...
- (笔记)Linux线程编译undefined reference to 'pthread_create'
在使用线程时,使用gcc或arm-linux-gcc编译时,会出现错误:undefined reference to 'pthread_create' 主要是以下两种原因: 1.#include &l ...
- Java中的Swing及AWT又称GUI编程
Java中的Swing及AWT又称GUI编程. 关于学习Java要不要学Swing及AWT,这个完全取决于个人的开发及发展方向. 如果从事web方向的开发,则可以不用学习Swing及AWT. 如果从事 ...
- MongoDB 3.X JAVA基本操作
对Collection的操作 import java.util.ArrayList; import java.util.Iterator; import java.util.List; import ...
- ICMP Ping模版实现对客户端网络状态的监控
Zabbix使用外部命令fping处理ICMP ping的请求,fping不包含在zabbix的发行版本中,需要额外去下载安装fping程序,安装完毕之后需要zabinx_server.conf中的参 ...
- pyremotevbox 用法
>>> import pyremotevbox.vbox as vbox >>> host = vbox.VirtualBoxHost(host='10.0.2.2 ...
- 【苏勇老师Linux 入门笔记】网络基础
IP 地址 IP 编制时一个双层编制方案,一个 IP 地址标示一个主机 (或一个网卡接口). 一个 IP 地址分为两个部分:网络部分(所属区域)和主机部分(标示区域中的哪个主机).IPv4 共32位, ...
- window wlan 相关服务
1.Extensible authentication protocol 2.cng key lsolation 3.wlan autoconfig
- 纯CSS3实现的顶部社会化分享按钮
今天要分享一款纯CSS3实现的社会化分享按钮,它放置在网页的顶部,你可以选择将它固定在网页顶部,这样对用户分享内容就十分方便.这些社会化分享按钮的图标文件来自google和bootstrap的字体文件 ...
- Linux 下 Nginx 反向代理 负载均衡配置
转载请注明出处:http://blog.csdn.net/smartbetter/article/details/52036350 上一篇分享了 Nginx + JDK + Tomcat + MySQ ...