Могу ли я обратиться к ресурсу, как к внешнему файлу?

Рейтинг: 0Ответов: 1Опубликовано: 04.03.2023

Есть файл ресурсов, допустим picture PNG picture.png.

Я его преобразую в .res командой windres res.rc -O coff -o picture.res (Файл picture.png находится в одной папке с res.rc) Потом компилирую .exe, включая его.

Могу ли я как-то к нему обратиться в коде .exe с помощью ifstream?

Ответы

▲ 0

Я нашёл способ получить байты файла ресурса:

    HMODULE module = GetModuleHandle(nullptr);
    HRSRC resInfo = FindResourceW(module, resName /*Имя ресурса*/, RT_RCDATA);
    if (resInfo == nullptr) wcout << L"Error open res!" << endl;
    HGLOBAL resBytes = LoadResource(module, resInfo);

    LPVOID lock = LockResource(resBytes);
    DWORD size = SizeofResource(module, resInfo);

    vector<BYTE> bytes(size);
    memcpy(bytes.data(), lock, size);

    ofstream out;
    out.open(fileName, ios::binary);

    unsigned __int64 ii = 0;
    unsigned __int64 &i = ii;

    while (i < size(data)) {
        out << data[i];
        i++;
    }
    out.close();