c++ - CEF 从嵌入式资源加载 HTML

标签 c++ windows resources chromium-embedded

我想从我的 exe 文件中嵌入的资源加载 HTML。我在 Windows 8.1 上使用 C++ 和 CEF3。

我看过 this article它似乎正是我要找的东西,但它与 CefSharp 有关。

有没有办法用 C++ 做到这一点?

另外,我可以嵌入一个包含 HTML 和 CSS 文件的文件夹并使用 CEF 加载它吗?

最佳答案

您可以将任何文件添加到资源中。用记事本打开项目的 *.rc 文件。将以下行添加到 *.rc 文件:

123 RCDATA "c:\\source-path\\source-file.htm"

您可以使用任何预定义的值,例如 #define ID_STRING 1234

在运行时打开资源,然后复制到磁盘或直接打开数据。此代码将尝试将文件保存到磁盘,然后打开文件磁盘。

#include <Windows.h>
#include <fstream>

void foo()
{
    HRSRC hrsrc = FindResource(NULL, MAKEINTRESOURCE(123), RT_RCDATA);
    if(!hrsrc)
    {
        MessageBoxW(0, L"resource `123 RCDATA` not found", 0, 0);
        return;
    }

    HMODULE hmodule = 0;
    HGLOBAL hglobal = LoadResource(hmodule, hrsrc);

    void *data = LockResource(hglobal);
    DWORD size = SizeofResource(hmodule, hrsrc);

    const wchar_t* filename = L"c:\\temp\\testout.htm";
    std::ofstream fout(filename, std::ios::binary);
    if(!fout)
    {
        MessageBoxW(0, L"Cannot make temp file", 0, 0);
        return;     
    }
    fout.write((char*)data, size);
    fout.close();

    ShellExecuteW(0, NULL, filename, NULL, NULL, SW_SHOW);
}

RCDATA 是常量 10

RT_RCDATAMAKEINTRESOURCE(10)

的宏

关于c++ - CEF 从嵌入式资源加载 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47462861/

相关文章:

PHP 警告 : PHP Startup: Invalid library (maybe not a PHP library)

c++ - 通过3d方库回调成员函数

c++ - 模板函数 C++ 类型的非常量引用的无效初始化

c++ - 在 C++ 中检查 stoi() 函数中的 int 限制

c# - Windows 如何解决冲突的文件系统权限/权利?

c++ - C++ 中的内存测量

c# - FxCop 对我在 NON-Team System Visual Studio 的资源中使用格式字符串提出异议

windows - 使用 Perl 将 UTF-8 字符放入 Excel?

node.js - 安装 Nodejs v9.0.0 后如何将 npm 从 v5.4.1 升级到最新版本

wpf - 如何将 TextBlock 绑定(bind)到包含格式化文本的资源?