QQ登录

只需一步,快速开始

176上位机VC MFC修改文件夹图标

[ 复制链接 ]

176上位机VC MFC修改文件夹图标

176上位机VC MFC修改文件夹图标
176上位机VC MFC修改文件夹图标
功能展示
我们电脑上文件夹图标也是可以修改的,可以通过鼠标进行修改,也可以通过编程进行修改;我们当前例程实现用指定图标替换文件夹默认图标,效果如图;
要点提示
图标的修改很简单,只要在要修改图标的文件夹内建立一个Desktop.ini文件,在文件内添加节名.ShellClassInfo,再写入两键名IconFile,IconIndex,分别为写入图标的路径和图标的索引就可了;
当然为了功能完善些,还可以把图标复制到文件夹内,再把此图标与新建立的Desktop.ini文件设置为隐藏及系统属性,不让用户知晓以免误操作删除;
实现功能
1.新建基于对话框的应用程序
2.添加三个变量CString m_sFoderPath;//要修改图标的文件夹路径 CString m_sIconPath;//图标路径 CString m_sIconName;//图标名称含后缀
拖拽图片控件ID为IDC_FOLDERICON用于显示要修改的文件夹图片,及另一图片控件ID为用于修改文件夹的图标;
拖拽三个按钮<选择要修改的文件夹><选择图标><执行修改>关联函数实现相应功能;
  1. void CGkbc8Dlg::OnFolder() //浏览文件夹
  2. {
  3.         BROWSEINFO bi;   
  4.         char buffer[MAX_PATH];   
  5.         ZeroMemory(buffer,MAX_PATH);   
  6.         bi.hwndOwner=GetSafeHwnd();   
  7.         bi.pidlRoot=NULL;   
  8.         bi.pszDisplayName=buffer;   
  9.         bi.lpszTitle="选择一个文件夹";   
  10.         bi.ulFlags=BIF_EDITBOX;   
  11.         bi.lpfn=NULL;   
  12.         bi.lParam=0;   
  13.         bi.iImage=0;
  14.         LPITEMIDLIST pList=NULL;   
  15.         if((pList=SHBrowseForFolder(&bi))!=NULL)   
  16.         {   
  17.                 char path[MAX_PATH];   
  18.                 ZeroMemory(path,MAX_PATH);   
  19.                 SHGetPathFromIDList(pList,path);  
复制代码
  1. m_sFoderPath = path; SHFILEINFO shfile; strcat(path,"\"); ::SHGetFileInfo(path,0,&shfile,sizeof(shfile),SHGFI_ICON);
  2.          CStatic*pStatic = (CStatic*)GetDlgItem(IDC_FOLDERICON); pStatic->SetIcon(shfile.hIcon);
  3.         }
  4. }
  5. void CGkbc8Dlg::OnChooseicon() //选择图标
  6. {
  7.         CFileDialog Dlg( TRUE,"*.ICO",NULL,NULL,"图标文件(*.ICO)|*.ICO||");
  8.         if(Dlg.DoModal()==IDOK)
  9.         {        
  10.                         m_sIconPath = Dlg.GetPathName();
  11.                         m_sIconName = Dlg.GetFileName();
  12.                         
  13.                         HICON hIcon;
  14.                         hIcon=ExtractIcon(AfxGetInstanceHandle(),m_sIconPath,0);
  15.                         CStatic*pStatic = (CStatic*)GetDlgItem(IDC_EXCHANGEICON);
  16.                 pStatic->SetIcon(hIcon);
  17.         }
  18. }
  19. void CGkbc8Dlg::OnExchange() //执行更改文件夹图标
  20. {
  21.         CString sIconNewPath,sINIPath;
  22.         sIconNewPath = m_sFoderPath;
  23.         sIconNewPath += '\\';
  24.         sIconNewPath += m_sIconName;
  25.         sINIPath      = m_sFoderPath+"\\Desktop.ini";

  26.         CopyFile(m_sIconPath,sIconNewPath,FALSE);//复制图标到目标文件夹

  27.         ::WritePrivateProfileString(".ShellClassInfo","IconFile",m_sIconName,sINIPath);
  28. //        ::WritePrivateProfileString(".ShellClassInfo","IconFile",sIconNewPath,sINIPath);//或使用此行
  29.         ::WritePrivateProfileString(".ShellClassInfo","IconIndex","0",sINIPath);

  30.         SetFileAttributes(sIconNewPath,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM);
  31.         SetFileAttributes(sINIPath,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM);
  32. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:176.上位机VC MFC修改文件夹图标.rar 
文件大小:137.21 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

大神点评(1)

快速回复 返回列表 客服中心 搜索