在MFC中实现“浏览文件夹”功能

news/2024/7/8 12:01:28

假设是对标号为ID_BTN_BRS的响应,那么这个消息响应函数可能会是这样子:

 

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. void CXXClass::OnBottonBrows(void)  
  2. {   
  3.     //选择文件夹  
  4.     char szSelDir[MAX_PATH+1];  
  5.     memset(szSelDir,0,MAX_PATH+1);  
  6.   
  7.     BROWSEINFO bi;   
  8.     memset(&bi,0,sizeof(BROWSEINFO));   
  9.     bi.hwndOwner=GetSafeHwnd();   //or NULL  
  10.     bi.pszDisplayName=NULL;   
  11.     bi.lpszTitle="请选择图片所在目录";  
  12.     bi.ulFlags=BIF_RETURNONLYFSDIRS;  /or ...  
  13.   
  14.     LPITEMIDLIST ItemID;   
  15.     ItemID=SHBrowseForFolder(&bi);      
  16.     if(ItemID)   
  17.     {   
  18.         SHGetPathFromIDList(ItemID,szSelDir);    
  19.         GlobalFree(ItemID);   !!!  
  20.     }   
  21.     else return;  
  22.   
  23.     CString strDir;  
  24.     strDir=szSelDir;  
  25.   
  26.     ///寻找选定文件夹下的图片文件  
  27.     strNameList.clear();   // 已定义vector<CString> strNameList;  
  28.   
  29.     WIN32_FIND_DATA fd;  
  30.     HANDLE hf;  
  31.     hf=FindFirstFile(strDir+"\\*.*",&fd);  
  32.   
  33.     if(hf==INVALID_HANDLE_VALUE)    
  34.     {  
  35.         //.....  
  36.         return;  
  37.     }  
  38.   
  39.     do  
  40.     {  
  41.         //非文件夹并且是合法的文件类型(根据扩展名判断其类型)  
  42.         if((!(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))&&  
  43.             xIsSuppImageType(fd.cFileName))  
  44.           strNameList.push_back(strDir+"\\"+fd.cFileName);  
  45.   
  46.     }while(FindNextFile(hf,&fd));  
  47.   
  48.     FindClose(hf);  
  49.   
  50.     nNum=strNameList.size();  
  51.     if(nNum==0)  
  52.     {  
  53.         //....  
  54.         return;  
  55.     }  
  56.     //...  
  57. }  

 

 

 

如果只是打开或者浏览文件,比如打开avi格式视频文件,可以

 

 

 

 

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. char *f="视频文件(合适尺寸,低帧率,avi格式)|*avi||";  
  2.   
  3. CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_FILEMUSTEXIST,f,NULL,0,TRUE);  
  4. dlg.m_ofn.lpstrTitle="打开视频"

http://www.niftyadmin.cn/n/3656359.html

相关文章

MFC实现打开、保存文件对话框和浏览文件夹对话框

一、打开文件夹&#xff1a; 1、CFileDialog实现 CFileDialog hFileDlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_READONLY, TEXT("支持的图像文件 (*.jpg;*.gif;*.bmp;...)|*.jpg;*.gif;*.bmp|专用Tiff图像文件(*.tiff;*.tif)|*.tiff;*.tif|所有…

WPF简介

WPF的全称是Windows Presentation Foundation&#xff0c;是微软新发布的Vista操作系统的三大核心开发库之一&#xff0c;其主要负责的是图形显示&#xff0c;所以叫Presentation&#xff08;呈现&#xff09;。作为新的图形引擎&#xff0c;WPF是基于DirectX的&#xff0c;当然…

MFC实现多TAB页的切换

风雨无阻 只有一条路不能选择——那就是放弃的路&#xff1b;只有一条路不能拒绝——那就是成长的路。 MFC Tab Control控件的详细使用 1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属…

[翻译]Windows Vista的秘密#11: 删除不可删除的东西

原文地址&#xff1a;http://blogs.msdn.com/tims/archive/2006/11/10/windows-vista-secret-11-deleting-the-undeletable.aspx作者&#xff1a;Tim Sneath翻译&#xff1a;Tony Qu &#xff08;来自BluePrint翻译团队&#xff09;我们大部分人都是从Window XP或Windows Vista…

用MFC实现多TAB页的切换

MFC Tab Control控件的详细使用 1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的…

[翻译] 理解IIS7的用户和组

原文地址&#xff1a;http://www.iis.net/1026/SinglePageArticle.ashx翻译&#xff1a;Tony Qu &#xff08;来自BluePrint翻译团队&#xff09;作者&#xff1a;Vikas Malhotra最后更新时间&#xff1a;2006年9月12日&#xff0c;星期二&#xff0c;上午11:48介绍在以前的IIS…

Windows下的Dos命令大全

copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件&#xff08;所有文件&#xff09;至本地C&#xff1a; xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树&#xff0c;用参数/Y将不提示覆盖相同文件 tftp -i 自己IP(用…

[翻译]VISTA音量控制

原文&#xff1a;https://blogs.msdn.com/larryosterman/archive/2005/12/15/504158.aspx作者&#xff1a;larryosterman翻译&#xff1a;Tony Qu (来自BluePrint翻译团队)在Vista之前&#xff0c;所有对应用程序的控制都是系统级的——当你用wave volumn API改变音量的时候&am…