Извлечение ресурсов в файл - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Решил я написать простенькую программу под венду, опыта не имею. Застопорился, обращаюсь за советом. Хочу написать программу на C, которая бы извлекала ресурсы из себя. Собираю таким образом:
$ i486-mingw32-windres res.rc -o res.o
$ i486-mingw32-gcc app.c res.o -o app.exe
res.rc:
#include "res.h"
IDR_IMG BITMAP "hearts.bmp"
IDR_TXT README "README"
res.h:
#define IDR_IMG 0x0001
#define IDR_TXT voina_i_mir
app.c:
#include <windows.h>
#include "res.h"
 
int WINAPI WinMain( HINSTANCE hInstance,
            HINSTANCE hPrevInstance,
            LPSTR lpszCmdLine,
            int nCmdShow)
{
    MessageBox(NULL, "Сейчас извлеку все нужные файлы...", "EpicFail", 0);
 
    //код для извлечения ресурсов
 
    MessageBox(NULL, "Нифига я не извлёк :(", "EpicFail", 0);
    return 0;
}
Суть программы: после запуска рядом с исполняемым файлом должны появится ещё и "voina_i_mir.txt" и "myimage.bmp". Дело-то за малым. Осталось только написать код для извлечения ресурсов и записи их в файл. Мучал гугл весь день, ничего не помогло. Помогите нубу, пожалуйста!

Решение задачи: «Извлечение ресурсов в файл»

textual
Листинг программы
    HRSRC R1 = FindResource(NULL, MAKEINTRESOURCE((int)IDR_IMG), RT_BITMAP);
    HGLOBAL R2 = LoadResource(NULL, R1);
    LPVOID M = LockResource(R2);
    DWORD L = SizeofResource(NULL, R1);
 
    printf("Size: %d \n", L);
    printf("Real: %d \n\n\n", sizeof(M));
 
    HANDLE  fp = CreateFile("tmp.bmp", GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
                CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
 
    DWORD size;
 
    if(fp != INVALID_HANDLE_VALUE) {
        WriteFile(fp, &M, L, &size, NULL);
        FlushFileBuffers(fp);
        CloseHandle(fp);
    }
    printf("Written: %d", size);

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы