【问题标题】:CEF load HTML from embedded resourceCEF 从嵌入式资源加载 HTML
【发布时间】:2017-11-23 20:27:00
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ windows resources chromium-embedded


    【解决方案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) 的宏

    【讨论】:

    • 太完美了!!非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2011-10-17
    • 2012-02-05
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 2011-08-01
    相关资源
    最近更新 更多