如何更改文件夹图标改图标

MFC&生成&exe文件的图标更改方法
创建或打开工程Icon(以下都以工程名为Icon为例)。&&&&
单击Workspace窗口的ResourceView标签,选中资源ID为IDR_MAINFRAME图标资源,然后按Delete键把它删除掉。注意:一定要把它删除才行。&&&&
& 从Developer&&
Studio的Insert菜单中选择Resource,然后选择Icon,新建(New)一个新的图标或导入(Import)一个已有的图标。&&&&
把新图标的资源ID改为AFX_IDI_STD_MDIFRAME(如果是MDI应用程序)或改为AFX_IDI_STD_FRAME(如果是SDI应用程序)。AFX_IDI_STD_MDIFRAME和AFX_IDI_STD_FRAME这两个资源ID是MFC中预定义了的。&&&&
& 编译并运行程序,可以发现主框架窗口的图标就是你指定的图标。
另一位网友总结的方法:
VC6.0生成的exe文件图标是用Icon下几个图标中value值最小的,顺序为IDR_MAINFRAME、IDR_ICONTETYPE、新加的,所以想更改生成的exe文件图标,只要保证图标的value值是Icon下几个图标中最小的就可以了。
如果生成的exe文件不想用VC自带的MFC图标,可以进行如下操作:
方法一、最简单的方法
1、在程序res文件夹下,删除MFC图标文件,加入自己的图标文件;
2、在图标IDR_MAINFRAME的属性对话框中,修改File name路径为自己的图标文件。
注:(1)一定要先删除原文件,否则会把你的图标文件覆盖掉;
(2)完成后在资源视图中可能发现还是原来的MFC图标,但编译后exe文件的图标已经变成自己的了。
1、在资源视图Icon下加入想用的图标;
2、修改该图标的value值,把值改为Icon下几个图标中最小的:
(1)方法一:打开Header Files下的Resource.h,找到Icon下的图标,系统默认是从128开始的,
#define&IDR_MAINFRAME&&&&&&&&&&&&&
IDR_ICONTETYPE&&&&&&&&&&&&
129(单/多文档程序的文档图标)
#define&IDI_ICON1&&&&&&&&&&&&&&&&&&&&&&&130
#define&IDI_ICON2&&&&&&&&&&&&&&&&&&&&&&&131
可以修改全部的value值,也可以只修改想用的图标,只要保证value值是Icon下几个图标中最小的就可以;
(2)方法二:在图标的属性对话框中,在ID后面加上=value,比如IDI_ICON1=127,也要保证value值是Icon下几个图标中最小的。
1、在资源视图中删除Icon下的IDR_MAINFRAME和IDR_ICONTETYPE;
2、加入想用的图标,可以改名为IDR_MAINFRAME,也可以不改;
3、如果不改名为IDR_MAINFRAME,则在程序中要修改相应的代码:
基于对话框的程序,在构造函数中有一句
AfxGetApp()-&LoadIcon(IDR_MAINFRAME);
记得把IDR_MAINFRAME改为你自己的图标名。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。随笔 - 304&
文章 - 0&评论 - 22&trackbacks - 0
刚才发现论坛上面有网友问:如何通过编程实现修改EXE文件的图标,类似于 熊猫烧香 的效果!自己也对这个比较感兴趣网上找了找,找到了两种方法,可以满足大家都要求了,这里面收集转载过来,大家可以实践下,看看好不好用,起码有代码可以参考:方法一:通过API编程实现:这个问题以前在CSDN上解答过,但是当时只是提了提几个要用到的函数,自己并没有去动手写实现。前几天和某人讨论这个问题,他认为只有通过PE内部的资源偏移才好改,熊猫烧香就是这么搞的,而我坚持API也可以的观点。后来我想了想觉得这个问题值得记住,并自己亲手把它写出来并试验成功。贴出代码来给大家分享:
EnableDebugPrivilge(SE_DEBUG_NAME,TRUE);HGLOBAL hResLoad(NULL);&&&&& HANDLE hExe(NULL);&&&&&&& HRSRC hRes(NULL);&&&&&&&& HANDLE hUpdateRes(NULL);&& char * lpResL&& BOOL hExe = LoadLibrary(_TEXT("D:\\Src.exe")); if (hExe == NULL) { && AfxMessageBox("加载Src.exe失败.",0,0); } hRes = FindResource((HMODULE)hExe, (LPCSTR)1, RT_ICON); if (hRes == NULL) { && AfxMessageBox("不能定位Src.exe中的第一个图标"); } hResLoad = LoadResource((HMODULE)hExe, hRes); if (hResLoad == NULL) { && AfxMessageBox("不能加载该图标资源"); } lpResLock =(char *)LockResource(hResLoad); if (lpResLock == NULL) { && AfxMessageBox("不能锁定该资源."); } hUpdateRes = BeginUpdateResource("G:\\Target.exe", FALSE); if (hUpdateRes == NULL) { && AfxMessageBox("不能打开Target.exe准备写."); } result =UpdateResource((HMODULE)hUpdateRes , RT_ICON, && (LPCSTR)1, 0, lpResLock, SizeofResource((HMODULE)hExe, hRes));if (result == FALSE) {&& AfxMessageBox("添加资源失败."); } if (!EndUpdateResource(hUpdateRes, FALSE)) { && AfxMessageBox("不能向目标EXE中写入改动结束资源更新"); } if (!FreeLibrary((HMODULE)hExe)) { && AfxMessageBox("不能释放Src的句柄."); }
有人说编程靠思路和套路,这个套路可真是够长的,这么多的函数必须按顺序配套使用,不能有差错。其实按照讨论的VC编程还有很多啊,比如CreateFile、CreateFileMapping、MapViewOfFile、UnmapViewOfFile这也是一个典型套路。至于EnableDebugPrivilge函数,是提升本进程的权限为DEBUG级别,代码网上有,大家可以自己找找!
方法二:通过PE文件的图标偏移地址实现:一年前初学VB时我对这个API就特感兴趣,听说这个API可以更改图标资源,就更感兴趣了,后来试了试,发现修改其它资源貌似没多大问题,唯独修改图标时无果,我发现所修改的图虽说已经写入到资源文件中了,但是就是无法显示。后来到网上查了下,发现用UpdateResource修改EXE图标的没一个成功的,大致都是发生成功写入,无法正常显示的问题。罢矣,当时就琢磨着把该问题先放放,等日后有时间再好好折腾。无奈时间过得太快,忽忽悠悠就过了一年了,前几天,在整理去年的一些源码时发现了这个遗留在硬盘中的代码,一年前无奈自己所学浅溥,啥都不知道,但现在已经对API有了较深厚的认识,再加上对汇编的一些了解,我想此时不解决更待何时。在折腾这个API的期间也发生不少问题,最让我自责的就是差点被 CreateFile 这个API给Game Over,这个小伟知道(又是小伟?没办法啊,谁要咱和小伟太有缘了~)。还好自己最终醒悟,否则真的要好好鄙视鄙视自己。最初修改时还是和一年前一个样,这时我一直在回想一样年遇到这个问题的问题:所写图标的数据是不是完整的写到了资源文件中?想到此,我用eXeScope(一个PE资源文件查看工具)看了下写入到资源文件中的十六进制,又用UltraEdit-32以十六进制查看ico文件中的数据,发现没问题啊?一字节一字节都对得上,那问题出在哪了?没法,继续在Google游荡,终于找了一份有效的资料(网址现在不知扔哪去了),全E文,看得难受,不过大致的意思是说ICON是由一个结构组成,同PE那些什么NT头,DOS头的差不多,而所显示的图像数据包函于ICON类型结构的dwImageOffset偏移处。呵,这下总算搞明白为什么直接把ICON文件写入到资源文件中显示不了的问题了,也就是说在dwImageOffset偏移位置处才是咱所需要的图像数据,这不就啥都OK了么,爷爷的,原来咱从一开始就被ICON文件整得稀里糊涂,靠MS,当然也鄙视下自己的无知。另外还好找到的那份资料有点人性,把结构给咱标出来了,那么现在一切都顺理成章,不说多了,上代码:
#include &stdio.h&#include &windows.h&#include &tchar.h&struct ICONDIRENTRY{& & BYTE bW& & BYTE bH& & BYTE bColorC& & BYTE bR& & WORD wP& & WORD wBitC& & DWORD dwBytesInR& & DWORD dwImageO};struct ICONDIR{& & WORD idR& & WORD idT& & WORD idC& & //ICONDIRENTRY idE};struct GRPICONDIRENTRY{& & BYTE bW& & BYTE bH& & BYTE bColorC& & BYTE bR& & WORD wP& & WORD wBitC& & DWORD dwBytesInR& & WORD nID;};struct GRPICONDIR{& & WORD idR& & WORD idT& & WORD idC& & GRPICONDIRENTRY idE};////////////////////////////////////////////////函数说明:修改EXE图标////参& & 数:IconFile 图标文件 //& && && && &&&ExeFile 被修改的EXE文件////返回值: 成功为True,否则False/////////////////////////////////////////////bool ChangeExeIcon(LPWSTR IconFile, LPWSTR ExeFile){& & ICONDIR stID;& & ICONDIRENTRY stIDE;& & GRPICONDIR stGID;& & HANDLE hF& & DWORD nSize, nGSize, dwR& & HANDLE hU& & PBYTE pIcon, pGrpI& & BOOL& & hFile = CreateFile(IconFile, GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);& & if (hFile == INVALID_HANDLE_VALUE)& & {& && && & }& & ZeroMemory(&stID, sizeof(ICONDIR));& & ret = ReadFile(hFile, &stID, sizeof(ICONDIR), &dwReserved, NULL);& & ZeroMemory(&stIDE, sizeof(ICONDIRENTRY));& & ret = ReadFile(hFile, &stIDE, sizeof(ICONDIRENTRY), &dwReserved, NULL);& & nSize = stIDE.dwBytesInR& & pIcon = (PBYTE)malloc(nSize);& & SetFilePointer(hFile, stIDE.dwImageOffset, NULL, FILE_BEGIN);& & ret = ReadFile(hFile, (LPVOID)pIcon, nSize, &dwReserved, NULL);& & if (!ret)& & {& && & CloseHandle(hFile);& && && & }& & ZeroMemory(&stGID, sizeof(GRPICONDIR));& & stGID.idCount = stID.idC& & stGID.idReserved = 0;& & stGID.idType = 1;& & CopyMemory(&stGID.idEntries, &stIDE, 12);& & stGID.idEntries.nID = 0;& & nGSize = sizeof(GRPICONDIR);& & pGrpIcon = (PBYTE)malloc(nGSize);& & CopyMemory(pGrpIcon, &stGID, nGSize);& & hUpdate = BeginUpdateResource(ExeFile, false);& & ret = UpdateResource(hUpdate, RT_GROUP_ICON, MAKEINTRESOURCE(1), 0, (LPVOID)pGrpIcon, nGSize);& & ret = UpdateResource(hUpdate, RT_ICON, MAKEINTRESOURCE(1), 0, (LPVOID)pIcon, nSize);EndUpdateResource(hUpdate, false);& & if (!ret)& & {& && & CloseHandle(hFile);& && && & }& & CloseHandle(hFile);& &}
阅读(...) 评论()[技术]XP下如何更改一类文件的默认图标
未知类型的文件的图标默认是没有的,但是我们可以自己添加自己喜欢的图标。如果是已存在的文件类型,可以直接打开控制面板,找到外观和主题,文件夹选项,文件类型。然后找到你想修改的文件的类型,点击“高级”,更改图标,然后就选到你想修改成的图标的位置,然后点击“确定”,然后点击“关闭”就可以完成xp系统下的更换图标的工作。
&& 但是在xp的系统下有两种情况不能修改图标:
(1).不能在文件类型那里修改“文件夹”的统一图标,不然会导致文件夹打不开,打开就会显示“搜索文件”的界面。这是微软的xp的一个错误。
(2).不能自己在“文件类型”那里新建一个文件类型,然后更改图标。这样的修改无法起到预期的更换图标的效果。可以采取另一个迂回的方法:选中未知的文件,右键“打开”,选择一个程序打开。然后到“文件类型”那里找到这个后缀的文件类型,再点击“高级”,然后就更改图标。对于没有“未知文件”的文件类型,我们可以通过以下的方法来实现:新建一个文本,然后把文本的后缀改为你想要的文件类型的后缀,然后再按照(2)的方法来更改图标。不过对于不存在的文件类型,更换图标是毫无意义的。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
美好的未来从现在开始!!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3299)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_083069',
blogTitle:'如何更改文件的图标(如何更改OFFICE文件的图标)',
blogAbstract:'\r\n\r\n\r\n\r\n我一直都喜欢干净、绿色,上网也喜欢裸奔的多,对于系统更喜欢免安装的多。所以我的系统都GHOSTXP,而更喜欢其他软件都是免安装的,所以连OFFICE都免安装。\r\n  今天一个朋友对我出一个难题:就是干净的系统(即没能安装OFFICE)对WORD文件默认找开方式是“写字板”,图标也是写字板的图标,但他有一个免安装的OFFICE,已经把打开方式改为微软的WORD了,但图标还是写字板的图标。于是我进行一番艰难之旅,终于把这个难题解决!\r\n   1、原来干净的XP中的“.doc”文件就是这个写字板图标。\r\n',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:2,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:3,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'美好的未来从现在开始!!',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 图标文件格式 的文章

 

随机推荐