鱼C论坛

 找回密码
 立即注册
查看: 2625|回复: 8

如何把VC release生成的EXE的图标改成自己想要的图标?

[复制链接]
发表于 2011-11-28 12:55:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用VC生成的exe图标看起来不好看,我想换成其他的icon,怎么样才能换呢?谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-28 13:36:17 | 显示全部楼层
LoadIcon
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-28 18:01:21 | 显示全部楼层
不是很明白,能说的具体点吗?谢谢!
我的是用 win32 console application工程创建的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-28 18:43:56 | 显示全部楼层
在资源视图中导入自己的图标。
然后在OnCreate函数中执行
m_hIcon = AfxGetApp()->LoadIcon(IDR_YOURICON);
当然你在其他函数下执行这句也可以的。

如果只是调用系统预设的几个图标可以直接在类对象定义的时候
WNDCLASS wnd;
wnd.hIcon = LoadIcon(NULL, XXX);
其中XXX可以是IDI_APPLICATION,   IDI_WARNING之类的,
具体可以查MSDN
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-28 19:05:19 | 显示全部楼层
Mr.C, win32 console application创建的工程也能用上面说的那样来修改吗?谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-28 21:28:18 | 显示全部楼层
直接替换资源不就ok了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-28 21:40:19 | 显示全部楼层
Sorry,题目没认真看,控制台的图标倒真没研究过。貌似没什么实际作用。
我帮你查了别人的答案。挺复杂的,你可以看看。
方法1

//设置图标为文件夹图标 IDI_ICON1
/* HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);
HWND hwnd=GetConsoleWindow();
SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)hIcon);



方法2

很简单,在控制台程序中添加Icon资源,将其ID改为“MAINICO”就行了



//代码前面加上
#ifdef _UNICODE
#pragma comment( linker, "/subsystem:/"windows/" /entry:/"wmainCRTStartup/"")
#else
#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"")
#endif

//设置图标的方法
HWND hwnd=GetConsoleWindow();
SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON1)));



第一种 为你的console工程加入一个资源文件并加入一个ico)

其实这样就可以了,因为第一个加入的icon(资源ID值为101)程序就会默认生成EXE的图标了



第二种 程序指定(也要为工程加入一个资源文件和一个ico)
#include "stdafx.h"

int main(int argc, char* argv[])
{
HWND hwnd=GetConsoleWindow();
SendMessage(hwnd,WM_SETICON,ICON_SMALL,( LPARAM )LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(101)));
scanf("a");
return 0;
}





其中101 就是你的ICON资源ID,可以换成其他的


在stdafx.h中
#define _WIN32_WINNT 0x0500
#define WINVER 0x0500

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers

#include <stdio.h>
#include <windows.h>



main函数也可以用如下替代
#include "stdafx.h"

int main(int argc, char* argv[])
{
HICON hIcon=AfxGetApp()->LoadIcon(IDI_Main);
HWND hwnd=GetConsoleWindow();
SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
scanf("a");
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-28 22:06:01 | 显示全部楼层
好的,谢谢Mr.C。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-29 11:18:59 From FishC Mobile | 显示全部楼层
vc就是这些特别蛋疼,直接用图标修改工具修改资源表还效率高点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 03:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表