本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。
作者:fireaxe_hq@hotmail.com
博客:fireaxe.blog.chinaunix.net
1. 编译后的可执行程序文件的图标:
在vc工程文件中,可以在resource中的icon目录里添加新的图标文件,添加后会在“文件名.rc”中自动添加一条新的resourceID语句进行资源ID与资源的绑定。例如:添加图标文件myIcon.ico文件后,会自动在文件resource.h中加入“#define IDI_ICON1 148”,其中148为系统随机分配的值,可以任意修改然后再在在“工程名.rc”中加入“IDI_ICON1 ICON DISCARDABLE "res\\myIcon.ico"”。
vc编译时,会指定resourceID值最小的为编译后可执行文件的图标,所以只要把希望成为图标的资源ID的值在resource.h中改为这些图标中最小的值就完成了。注意不要引起冲突。
2. 窗口左上角的图标:
程序中各个窗口的左上角都有一个图标,他是图标文件的16×16版本,而上面讲到的图标是32×32版本。
该图标是通过在窗口的构造函数中调用AfxGetApp()->LoadIcon(nResourceID)实现的,因此只要把默认ID改为需要的ID就完成了,当然前提是已经加入了所需的资源。
3. 用户窗口内图标的调用(eg: CAboutDlg中的图标):
在窗口中加入位图是通过PictureBox实现的,图标作为位图的一种当然也不例外。在需要的地方键入PictureBox,打开properties对话框,在Type中选择Icon,然后在Image中选择所需的resourceID。再次强调要先加入所需资源。
CAoutDlg中的图标如果想改变,也可以通过改变属性中的Image来实现。
4. 实践:
如果仅仅是为了改变喜欢的图标,而且需各处都是统一的图标,最好的方法是改变三个应用所共同的部分,这样相当于改变了宏定义,不会有遗漏,方法如下:
方法一:文件代替法
在res文件夹中,用新的图标文件代替原默认文件,这样当系统添加资源的时候就会利用该新资源编译。
方法二:修改资源指向法
把新的图标文件加入res文件夹,然后在vc中直接打开“文件名.rc”文件(点击“打开”,在打开的对话框中的“open as”中选择“Text”,然后再选择“文件名.rc”),修改“IDI_ICON1 ICON DISCARDABLE "res\\文件名.ico"”中的文件名为需要的文件名,完成。
如果想在三种应用下使用不同的图标以彰显个性,就需要在利用各自独特的方式修改。
***注意:文件代替法与修改资源指向法可能会使编译器误认为没有进行修改不进行重编译,所以需要先clean的debug版的文件***
本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。
作者:fireaxe_hq@hotmail.com
博客:fireaxe.blog.chinaunix.net
阅读(3895) | 评论(0) | 转发(0) |