最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
WTL中CFileDialog实现文件多选
时间:2013-11-12 编辑:简简单单 来源:一聚教程网
我在将一个用MFC编写的工程修改为WTL工程,旧的MFC工程中有调用文件浏览器选择多个文件的代码,但是换成WTL平台之后,这部分代码是行不通的。最后我将这部分代码改成了WTL的实现方式。
MFC中使用CFileDialog实现文件多选在MFC中,可以使用下面的方法实现文件多选:
代码如下 | 复制代码 |
TCHAR szInitPath[MAX_PATH] = L"D:\"; CFileDialog dlg (TRUE) ; const int nMaxFiles = 100; const int nBufferSize = (nMaxFiles * (MAX_PATH + 1)) + 1; CString strFileName; dlg.m_ofn.lpstrFile = strFileName.GetBuffer(nBufferSize); dlg.m_ofn.nMaxFile = nBufferSize; dlg.m_ofn.lpstrInitialDir = szInitPath; dlg.m_ofn.Flags |= OFN_EXPLORER | OFN_ALLOWMULTISELECT | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR; dlg.m_ofn.lpstrFilter = _T("All Files *.* "); dlg.m_ofn.lpstrTitle = _T("Import Files"); int nResult = dlg.DoModal(); strFileName.ReleaseBuffer(); std::list if(nResult == IDOK) { BOOL bHasFile = FALSE; CString strFile; POSITION pos = {0}; pos = dlg.GetStartPosition(); while(pos != NULL) { CString strPathName = dlg.GetNextPathName(pos); if (FALSE==strPathName.IsEmpty()) { lsPath.push_back(strPathName); } } } |
WTL中使用CFileDialog实现文件多选WTL中,并没有对SDK中的API进行过多的封装,所以可以通过查询SDK文档,得知WTL中CFileDialog的文件多选的实现。在使用CFileDialog显示打开文件对话框并返回之后,CFileDialog的m_szFileName成员标志着用户选择的文件信息,m_szFileName 是一个TCHAR 数组。如果用户选择了单个文件,那么m_szFileName就保存着用户选择的文件名,如果用户选择了多个文件,那么m_szFileName保存着被选中所有的文件名称信息,其的结构如下:
文件所在目录路径 第一个文件名 第二个文件名 第三个文件名 。不同的文件名直接有个0,结尾处有两个0。
代码如下 | 复制代码 |
TCHAR szInitPath[MAX_PATH] = L"D:"; |
-
上一个: JS代码屏蔽鼠标右键和F5刷新实例
相关文章
- PPT文件如何添加多个动画 06-25
- 利用PS将多个文件集合到一个文件当中 06-06
- IE7同时下载多个文件失败怎么办,IE7同时下载多个文件失败原因分析 09-12
- Python实现递归创建多级文件夹的例子 06-12
- shell多进程scp传文件的脚本 09-15
- git add 多个文件的格式介绍 04-02