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 ...
随机推荐
- ubuntu 挂载硬盘
https://cndaqiang.github.io/2017/10/11/ubuntu-disk/ 查看硬盘 查看方法一 查看/dev下面的设备文件 ll -h /dev/sd* 通过sudo f ...
- 【总结】牛客职播第十期:程盟有你,way来可期
一.介绍 携程旅行2018校园春招流程介绍&面试答疑 讲师:宋涛,李响 二.答疑 1,技术都是先通过笔试进行优胜劣汰.论真英雄还是靠技术! 2,英语四级必须过! 3,国外大公司招人,对他们的文 ...
- 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...
- com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method
查看了网友们的错误原因, 需要进行实例化的类没有进行实例化,具体没有实例化的类会在错误信息中显示,在错误信息中搜索“Serializable”即可找到将其实现序列化可消除错误. 是在使用Dubbo提供 ...
- Android 输入法遮挡问题
在Android系统中,由于手机屏幕大小的限制,一般需要字符输入的时候,弹出的输入法面板往往会占据大半个屏幕,如果输入框正好在下方,那经常会出现被输入法面板遮挡的尴尬,给使用者带来不小的困扰,用户体验 ...
- python3 post方式上传文件。
借助第三方库:Requests 其官网地址: http://python-requests.org 官网上写的安装方式:http://docs.python-requests.org/ ...
- perl 模块的创建以及制定perl 模块的路径
1) perl 模块的创建 perl 模块的后缀名为.pm, 其中的内容和一般的perl脚本相同, perl模块中通常放置可重用的函数以及变量, 比如创建一个fasta.pm,里面包含一个统计fast ...
- Web APi之HttpClient注意事项以及建议
Web APi之HttpClient注意事项以及建议 前言 之前对于用SelfHost来手动实现Web API的宿主模式,似乎不是太深入,所以本篇文章我们一起来讨论关于利用HttpClient来访问W ...
- Easyradius 1.699更新,增加用户设备绑定、桥接用户管理功能
最近几天,由于IDC机房设备的问题,导致OA连接3天一天挂2次,真是把我抑闷着,最事一个烦事特别多 好不容易等了一个五一假期,也不得空,把最近一些网友反馈的OA的一些功能及BUG进行修复,主要是以下几 ...
- TensorFlow:tf.train.Saver()模型保存与恢复
1.保存 将训练好的模型参数保存起来,以便以后进行验证或测试.tf里面提供模型保存的是tf.train.Saver()模块. 模型保存,先要创建一个Saver对象:如 saver=tf.train.S ...