选择文件或者文件夹处理函数
来源:互联网 发布:windows多线程互斥 编辑:程序博客网 时间:2024/06/05 03:59
写代码时经常会遇到,如点击按钮选择文件或者文件夹路径的操作,网上搜集了这方面的函数,以供后续使用。
1,获取文件夹路径:
BROWSEINFO的结构如下:
typedef struct _browseinfo {
HWND hwndOwner;
// 父窗口句柄
LPCITEMIDLIST pidlRoot;
// 要显示的文件夾的根(Root)
LPTSTR pszDisplayName;
// 保存被选取的文件夾路径的缓冲区
LPCTSTR lpszTitle;
// 显示位于对话框左上部的标题
UINT ulFlags;
// 指定对话框的外观和功能的標志
BFFCALLBACK lpfn;
// 处理事件的回调函数
LPARAM lParam;
// 应用程序传给回调函数的参数
int iImage;
// 保存被选取的文件夾的图片索引
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO
各个参数的含义可参考MSDN;
实例部分代码:
char szPath[256];
BROWSEINFO bi;
LPITEMIDLIST pIDL;
bi.hwndOwner = m_hWnd;//一般通过GetSafeHwnd()函数获取,记不清是不是
bi.pidlRoot = NULL;
bi.pszDisplayName = szPath;
bi.lpszTitle = m_strTitle;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
if(pIDL = SHBrowseForFolder( &bi ))
{
if (pIDL != NULL)
{
if(SHGetPathFromIDList(pIDL,szPath))
{
m_sMapPath = szPath;
UpdateData(FALSE);
}
}
}
2,获取文件路径:
使用CFileDialog类并设置OFN_ALLOWMULTISELECT标志时,OPENFILENAME结构体的lpstrFile成员是一个指向用户申请分配的缓冲区,里面接受所选的路径和文件名列表,这个列表的每一项由一个NULL隔开,最末以两个NULL结束。nMaxFile成员指明了缓冲区的大小,如果所选择的文件名的加起来的总长度超过了此值,则DoModal函数返回IDCANCEL,如果用户试图打开超过缓冲区大小的文件集的话,CommDlgExtendedError()将返回FNERR_BUFFERTOOSMALL,这时候,lpstrFile的前两个byte将会包含实际需要的缓冲区的字节数。
如果是在Windows NT 4.0下,能被拷贝到lpstrFile缓冲区的字节数被限制在2562字节以内,如果超过将被截断。
CFileDialog类具体的参数可以参考MSDN的构造函数说明。
实例部分代码如下
#include "cderr.h" //for definition of FNERR_BUFFERTOOSMALL
CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, NULL, NULL);
DWORD MAXFILE = 4000
dlg.m_ofn.nMaxFile = MAXFILE;
char* pc = new char[MAXFILE];
dlg.m_ofn.lpstrFile = pc;
dlg.m_ofn.lpstrFile[0] = NULL;
int iReturn = dlg.DoModal();
if(iReturn == IDOK)
{
int nCount = 0;
POSITION pos = dlg.GetStartPosition();
while (pos != NULL)
{
dlg.GetNextPathName(pos);
nCount++;
}
CString str;
str.Format("Successfully opened %d files ", nCount);
AfxMessageBox(str);
}
else if(iReturn == IDCANCEL)
AfxMessageBox("Cancel");
if(CommDlgExtendedError() == FNERR_BUFFERTOOSMALL)
AfxMessageBox("BUFFERTOOSMALL");
delete []pc;
- 选择文件或者文件夹处理函数
- C#选择文件、选择文件夹、打开文件(或者文件夹)
- C#选择文件、选择文件夹、打开文件(或者文件夹)
- C#选择文件、选择文件夹、打开文件(或者文件夹)
- C#选择文件、选择文件夹、打开文件(或者文件夹)
- 使用C#选择文件夹、打开文件夹、选择文件或者如何使用C#选择文件夹
- 删除文件或者文件夹
- C#选择文件、选择文件夹、打开文件夹
- SWT的选择文件和文件夹的函数
- swt 文件 文件夹 选择
- WinForm 文件/文件夹选择
- C#选择文件 文件夹
- Java 创建文件或者文件夹
- PHP移动文件或者文件夹
- java删除文件夹或者文件
- PHP移动文件或者文件夹
- git删除文件或者文件夹
- github忽略文件或者文件夹
- monit监控Linux系统
- 色可冽重金属捕捉剂伴侣ZP02
- ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- C++虚函数深入测试
- 选择文件或者文件夹处理函数
- phantomjs/casperjs动态传入参数
- hdu 3555 Bomb
- c# int与byte[]转换
- 【android 权限】
- eclipse快速打开文件所在位置
- acm-uva445(水题)
- centos下bash: XXX: command not found的解决方法
- spring实战的rest笔记