工控编程吧
标题:
176上位机VC MFC修改文件夹图标
[打印本页]
作者:
qq263946146
时间:
2016-1-19 21:23
标题:
176上位机VC MFC修改文件夹图标
(, 下载次数: 3)
上传
点击文件名下载附件
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为用于修改文件夹的图标;
拖拽三个按钮<选择要修改的文件夹><选择图标><执行修改>关联函数实现相应功能;
void CGkbc8Dlg::OnFolder() //浏览文件夹
{
BROWSEINFO bi;
char buffer[MAX_PATH];
ZeroMemory(buffer,MAX_PATH);
bi.hwndOwner=GetSafeHwnd();
bi.pidlRoot=NULL;
bi.pszDisplayName=buffer;
bi.lpszTitle="选择一个文件夹";
bi.ulFlags=BIF_EDITBOX;
bi.lpfn=NULL;
bi.lParam=0;
bi.iImage=0;
LPITEMIDLIST pList=NULL;
if((pList=SHBrowseForFolder(&bi))!=NULL)
{
char path[MAX_PATH];
ZeroMemory(path,MAX_PATH);
SHGetPathFromIDList(pList,path);
复制代码
m_sFoderPath = path; SHFILEINFO shfile; strcat(path,"\"); ::SHGetFileInfo(path,0,&shfile,sizeof(shfile),SHGFI_ICON);
CStatic*pStatic = (CStatic*)GetDlgItem(IDC_FOLDERICON); pStatic->SetIcon(shfile.hIcon);
}
}
void CGkbc8Dlg::OnChooseicon() //选择图标
{
CFileDialog Dlg( TRUE,"*.ICO",NULL,NULL,"图标文件(*.ICO)|*.ICO||");
if(Dlg.DoModal()==IDOK)
{
m_sIconPath = Dlg.GetPathName();
m_sIconName = Dlg.GetFileName();
HICON hIcon;
hIcon=ExtractIcon(AfxGetInstanceHandle(),m_sIconPath,0);
CStatic*pStatic = (CStatic*)GetDlgItem(IDC_EXCHANGEICON);
pStatic->SetIcon(hIcon);
}
}
void CGkbc8Dlg::OnExchange() //执行更改文件夹图标
{
CString sIconNewPath,sINIPath;
sIconNewPath = m_sFoderPath;
sIconNewPath += '\\';
sIconNewPath += m_sIconName;
sINIPath = m_sFoderPath+"\\Desktop.ini";
CopyFile(m_sIconPath,sIconNewPath,FALSE);//复制图标到目标文件夹
::WritePrivateProfileString(".ShellClassInfo","IconFile",m_sIconName,sINIPath);
// ::WritePrivateProfileString(".ShellClassInfo","IconFile",sIconNewPath,sINIPath);//或使用此行
::WritePrivateProfileString(".ShellClassInfo","IconIndex","0",sINIPath);
SetFileAttributes(sIconNewPath,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM);
SetFileAttributes(sINIPath,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM);
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/ca6ca0fb4fef72faf1bb5d472f0fe3fd/0/0/w_19rteastex.swf-albumId=5225919109-tvId=5225919109-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4