VC/MFC 文件选择和文件夹选择,代码片段

1、批量选择文件

// 批量添加文件列表
void AddFile()
{
	CString		szFileName;
	CString		szCount;
	POSITION	pos;
	int		i;
	int		nCount=0;		//文件数量
	//输入文件
	CFileDialog InFile( TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,_T("某种格式|*.fmt|所有文件(*.*)|*.*||") );
	InFile.m_ofn.nMaxFile  = 10000;		//文件上限
	InFile.m_ofn.lpstrFile = (LPWSTR)malloc(InFile.m_ofn.nMaxFile*sizeof(TCHAR));
	memset(InFile.m_ofn.lpstrFile,0,InFile.m_ofn.nMaxFile);

	//按了OK按钮,开始获取文件列表
	if(InFile.DoModal() == IDOK)
	{
		pos=InFile.GetStartPosition(); 
		while(pos)
		{	
			szFileName=InFile.GetNextPathName(pos);
			//这里szFileName就是文件路径
			//做点什么事情,比如添加到列表框
		}
	}
	//释放空间
	free(InFile.m_ofn.lpstrFile);
}

2、选择文件夹

void SelectPath()
{
	//选择输出路径
	TCHAR szDir[MAX_PATH];
	BROWSEINFO bi; 
	ITEMIDLIST *pidl; 
	bi.hwndOwner = this->m_hWnd; 
	bi.pidlRoot = NULL;
	bi.pszDisplayName = szDir;//这个是输出缓冲区 
	bi.lpszTitle = _T("选择输出文件夹:"); //标题
	bi.ulFlags = BIF_NEWDIALOGSTYLE;//使用新的界面,在win7中效果较好//BIF_RETURNONLYFSDIRS; 
	bi.lpfn = NULL;
	bi.lParam = 0;
	bi.iImage = 0;
	pidl = SHBrowseForFolder(&bi);//弹出对话框 
	if (pidl == NULL)//点了取消,或者选择了无效的文件夹则返回NULL
		return;
	
	if(SHGetPathFromIDList(pidl, szDir)) 
		szDir = szDir;//szDir就是要获取的文件夹	
	//得到之后做点什么
}



 

posted @ 2013-12-17 17:15  星沉地动  阅读(367)  评论(0编辑  收藏  举报