CEF从嵌入式资源加载HTML

时间:2017-11-23 20:27:01

标签: c++ windows resources chromium-embedded

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

我已经看过this article,这似乎正是我所寻找的,但它与CefSharp有关。

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

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

1 个答案:

答案 0 :(得分:1)

您可以向资源添加任何文件。用记事本打开项目的* .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)

的宏