CEF 从嵌入式资源加载 HTML

CEF load HTML from embedded resource

我想从我的 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)

的宏