在MFC中实现“浏览文件夹”功能
2015-01-05 14:35
190 查看
假设是对标号为ID_BTN_BRS的响应,那么这个消息响应函数可能会是这样子:
[cpp] view
plaincopyprint?
void CXXClass::OnBottonBrows(void)
{
//选择文件夹
char szSelDir[MAX_PATH+1];
memset(szSelDir,0,MAX_PATH+1);
BROWSEINFO bi;
memset(&bi,0,sizeof(BROWSEINFO));
bi.hwndOwner=GetSafeHwnd(); //////or NULL
bi.pszDisplayName=NULL;
bi.lpszTitle="请选择图片所在目录";
bi.ulFlags=BIF_RETURNONLYFSDIRS; /////or ...
LPITEMIDLIST ItemID;
ItemID=SHBrowseForFolder(&bi);
if(ItemID)
{
SHGetPathFromIDList(ItemID,szSelDir);
GlobalFree(ItemID); ////!!!
}
else return;
CString strDir;
strDir=szSelDir;
///寻找选定文件夹下的图片文件
strNameList.clear(); // 已定义vector<CString> strNameList;
WIN32_FIND_DATA fd;
HANDLE hf;
hf=FindFirstFile(strDir+"\\*.*",&fd);
if(hf==INVALID_HANDLE_VALUE)
{
//.....
return;
}
do
{
//非文件夹并且是合法的文件类型(根据扩展名判断其类型)
if((!(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))&&
xIsSuppImageType(fd.cFileName))
strNameList.push_back(strDir+"\\"+fd.cFileName);
}while(FindNextFile(hf,&fd));
FindClose(hf);
nNum=strNameList.size();
if(nNum==0)
{
//....
return;
}
//...
}
如果只是打开或者浏览文件,比如打开avi格式视频文件,可以
[cpp] view
plaincopyprint?
char *f="视频文件(合适尺寸,低帧率,avi格式)|*avi||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_FILEMUSTEXIST,f,NULL,0,TRUE);
dlg.m_ofn.lpstrTitle="打开视频";
[cpp] view
plaincopyprint?
void CXXClass::OnBottonBrows(void)
{
//选择文件夹
char szSelDir[MAX_PATH+1];
memset(szSelDir,0,MAX_PATH+1);
BROWSEINFO bi;
memset(&bi,0,sizeof(BROWSEINFO));
bi.hwndOwner=GetSafeHwnd(); //////or NULL
bi.pszDisplayName=NULL;
bi.lpszTitle="请选择图片所在目录";
bi.ulFlags=BIF_RETURNONLYFSDIRS; /////or ...
LPITEMIDLIST ItemID;
ItemID=SHBrowseForFolder(&bi);
if(ItemID)
{
SHGetPathFromIDList(ItemID,szSelDir);
GlobalFree(ItemID); ////!!!
}
else return;
CString strDir;
strDir=szSelDir;
///寻找选定文件夹下的图片文件
strNameList.clear(); // 已定义vector<CString> strNameList;
WIN32_FIND_DATA fd;
HANDLE hf;
hf=FindFirstFile(strDir+"\\*.*",&fd);
if(hf==INVALID_HANDLE_VALUE)
{
//.....
return;
}
do
{
//非文件夹并且是合法的文件类型(根据扩展名判断其类型)
if((!(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))&&
xIsSuppImageType(fd.cFileName))
strNameList.push_back(strDir+"\\"+fd.cFileName);
}while(FindNextFile(hf,&fd));
FindClose(hf);
nNum=strNameList.size();
if(nNum==0)
{
//....
return;
}
//...
}
如果只是打开或者浏览文件,比如打开avi格式视频文件,可以
[cpp] view
plaincopyprint?
char *f="视频文件(合适尺寸,低帧率,avi格式)|*avi||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_FILEMUSTEXIST,f,NULL,0,TRUE);
dlg.m_ofn.lpstrTitle="打开视频";
相关文章推荐
- 在MFC中实现“浏览文件夹”功能
- 在win32中实现浏览文件夹功能与删除文件功能
- 实现浏览文件夹功能
- MFC浏览文件夹、新建文件夹功能
- 实现浏览文件夹功能
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- MFC总结(10) ---- MFC中CFileDialog 实现浏览文件和浏览目录功能
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- 《MFC实现打开、保存文件对话框和浏览文件夹对话框》
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- 【Vegas改编】用C#实现浏览文件夹功能
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- Windows Script Host之用vbs实现[浏览文件夹]功能
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- MFC实现打开、保存文件对话框和浏览文件夹对话框,把代码直接拷贝到要响应的按钮函数下面就行了
- MFC实现打开、保存文件对话框和浏览文件夹对话框(转)
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- MFC实现打开、保存文件对话框和浏览文件夹对话框 .
- MFC实现打开、保存文件对话框和浏览文件夹对话框