首页 >后端开发 >C++ >如何将文本文件作为资源嵌入到我的本机 Windows 应用程序中?

如何将文本文件作为资源嵌入到我的本机 Windows 应用程序中?

DDD
DDD原创
2024-12-12 19:26:14913浏览

How Can I Embed a Text File as a Resource in My Native Windows Application?

将文本文件作为资源嵌入本机 Windows 应用程序

问题: 您寻求一种将文本文件的内容嵌入到可执行二进制文件中的方法,如下所示可在运行时访问的资源。

解决方案:在本机 Windows 应用程序中利用自定义资源来实现此目的。

用户定义的资源格式

MSDN 中定义的用户定义资源的结构为:

nameID typeID filename

地点:

  • nameID:唯一标识资源的 16 位无符号整数。
  • typeID: 大于 255 的唯一 16 位无符号整数,标识资源类型。
  • 文件名: 将嵌入二进制内容的文件的路径。

嵌入文本文件

通过向资源文件添加条目来嵌入文本文件:

IDR_MYTEXTFILE TEXTFILE "mytextfile.txt"

确保资源 ID(nameIDtypeID)和resource.h文件一致。

加载Embedded文件

包含必要的Windows标头并定义加载资源的函数:

#include <windows.h>
#include <cstdio>
#include "resource.h"

void LoadFileInResource(int name, int type, DWORD& size, const char*& data)
{
    // ... (Error checking omitted for clarity)
    HRSRC rc = ::FindResource(handle, MAKEINTRESOURCE(name),
        MAKEINTRESOURCE(type));
    HGLOBAL rcData = ::LoadResource(handle, rc);
    size = ::SizeofResource(handle, rc);
    data = static_cast<const char*>(::LockResource(rcData));
}

使用示例:

int main()
{
    DWORD size = 0;
    const char* data = NULL;
    LoadFileInResource(IDR_MYTEXTFILE, TEXTFILE, size, data);
    // ... (Use the data pointer to access the resource contents)
    return 0;
}

注意:

  • 修改资源数据需要使用BeginUpdateResource()、UpdateResource()和EndUpdateResource()。
  • 程序退出时资源会自动删除。

以上是如何将文本文件作为资源嵌入到我的本机 Windows 应用程序中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn