我如何把一个"*.ico"文件添加到一个 EXE 文件中,是否可以?可以的话,如何实现?

jingzhang 2003-08-19 03:24:51
我如何把一个"*.ico"文件添加到一个 EXE 文件中,成为他的一个资源,否可以?可以的话,如何实现?

我使用了BeginUpdateResource()来做,只能把从 EXE,DLL文件提取的资源添加进去,而不能把外部文件导入的资源添加

我不知道有没有别的办法,还是这个函数就可以这么做,(我试了一下,不行)!!

不知道哪位大虾知道,希望能不灵赐教!!!!!!

最好能提供详细的源代码?

谢谢!

我的幽香:zj_zj_01@sina.com

...全文
149 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ozzman 2003-08-20
  • 打赏
  • 举报
回复
顺便说一句,生成EXE程序,就是自解压程序也使用这个方法做的!
有兴趣可以研究研究!
Ozzman 2003-08-20
  • 打赏
  • 举报
回复
可以!我写的就不给你了!给段MSDN的
HRSRC hResLoad; // handle to loaded resource
HANDLE hExe; // handle to existing .EXE file
HRSRC hRes; // handle/ptr. to res. info. in hExe
HANDLE hUpdateRes; // update resource handle
char *lpResLock; // pointer to resource data
BOOL result;
// Load the .EXE file that contains the dialog box you want to copy.
hExe = LoadLibrary("hand.exe");
if (hExe == NULL)
{
ErrorHandler("Could not load exe.");
}

// Locate the dialog box resource in the .EXE file.
hRes = FindResource(hExe, "AboutBox", RT_DIALOG);
if (hRes == NULL)
{
ErrorHandler("Could not locate dialog box.");
}

// Load the dialog box into global memory.
hResLoad = LoadResource(hExe, hRes);
if (hResLoad == NULL)
{
ErrorHandler("Could not load dialog box.");
}

// Lock the dialog box into global memory.
lpResLock = LockResource(hResLoad);
if (lpResLock == NULL)
{
ErrorHandler("Could not lock dialog box.");
}

// Open the file to which you want to add the dialog box resource.
hUpdateRes = BeginUpdateResource("foot.exe", FALSE);
if (hUpdateRes == NULL)
{
ErrorHandler("Could not open file for writing.");
}

// Add the dialog box resource to the update list.
result = UpdateResource(hUpdateRes, // update resource handle
RT_DIALOG, // change dialog box resource
"AboutBox", // dialog box name
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), // neutral language
lpResLock, // ptr to resource info
SizeofResource(hExe, hRes)); // size of resource info.
if (result == FALSE)
{
ErrorHandler("Could not add resource.");
}

// Write changes to FOOT.EXE and then close it.
if (!EndUpdateResource(hUpdateRes, FALSE))
{
ErrorHandler("Could not write changes to file.");
}

// Clean up.
if (!FreeLibrary(hExe))
{
ErrorHandler("Could not free executable.");
}
fengqinggao 2003-08-19
  • 打赏
  • 举报
回复
估计是理解错了题目的意思,呵呵,献丑了
fengqinggao 2003-08-19
  • 打赏
  • 举报
回复
在你的Workspace(就是一般放在左边的工程管理对话框)的ResourceView页中,在Icon项上单击邮件,选择“Import...”(导入)命令,然后选择你所需要的Icon文件,导入就可以了
wxfjb 2003-08-19
  • 打赏
  • 举报
回复
可以,当作资源导入
approach 2003-08-19
  • 打赏
  • 举报
回复
http://www.codeproject.com/useritems/dynares.asp
http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Resources/IntroductiontoResources/UsingResources.asp
gzshd 2003-08-19
  • 打赏
  • 举报
回复
使用了BeginUpdateResource()来做,只能把从 EXE,DLL文件提取的资源添加进去,而不能把外部文件导入的资源添加,那你选做一个最简单的小程序,里面包含你要加的.ico作为资源,然后编译成.exe,用BeginUpdateResource()再来做不就行了吗
zlc990405 2003-08-19
  • 打赏
  • 举报
回复
先把ico文件加入到vc的资源里,然后查看如何使用资源的资料就可以了
Go语言性能好、语法简单、开发效率高!一起来探索Go 语言吧!本课程特别适合从事PHP/Python/Ruby/Node.js等Web开发的读者,通过本课程可以了解编译型语言怎么写Web应用开发,系统底层怎么进行网络通信。 beego 简介beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。beego 的架构beego 的整体设计架构如下所示:beego 是基于八大独立的模块构建的,是一个高度解耦的框架。当初设计 beego 的时候就是考虑功能模块化,用户即使不使用 beego 的 HTTP 逻辑,也依旧可以使用这些独立模块,例如:你可以使用 cache 模块来做你的缓存逻辑;使用日志模块来记录你的操作信息;使用 config 模块来解析你各种格式的文件。所以 beego 不仅可以用于 HTTP 类的应用开发,在你的 socket 游戏开发也是很有用的模块,这也是 beego 为什么受欢迎的一个原因。大家如果玩过乐高的话,应该知道很多高级的东西都是一块一块的积木搭建出来的,而设计 beego 的时候,这些模块就是积木,高级机器人就是 beego。至于这些模块的功能以及如何使用会在后面的文档逐一介绍。beego 的执行逻辑既然 beego 是基于这些模块构建的,那么它的执行逻辑是怎么样的呢?beego 是一个典型的 MVC 架构,它的执行逻辑如下图所示:beego 项目结构一般的 beego 项目的目录如下所示:├── conf│   └── app.conf├── controllers│   ├── admin│   └── default.go├── main.go├── models│   └── models.go├── static│   ├── css│   ├── ico│   ├── img│   └── js└── views    ├── admin    └── index.tpl从上面的目录结构我们可以看出来 M(models 目录)、V(views 目录)和 C(controllers 目录)的结构, main.go 是入口文件

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧