Помещение файла в ресурсы и извлечение его из ресурсов - Использование извлеченного файла
ОГЛАВЛЕНИЕ
Страница 3 из 3
Использование извлеченного файла
Мы представили ресурс как массив байт - и можем делать с ним то, что хотели. Записать на диск как файл: (способов куча, я использую те функции, к которым привык)
//где то наверху должны быть подключены
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
//Получаем размер массива (размер файла)
DWORD dwFileSize=SizeofResource(hMod,hRes);
if(!dwFileSize) {
//Обработка ошибки
}
int
hFile=open("AnyFileName",O_BINARY|O_CREAT|O_WRONLY,S_IWRITE);
if(k==-1) {
//Обработка ошибки
}
if(write(hFile,lpbArray,dwFileSize)==-1) {
close(hFile);
//Обработка ошибки;
}
close(hFile);
Проиграть ресурс, (если, конечно, это был *.wav файл; причем не важно, как мы его объявляли - WAVE или RC_DATA)
//где то наверху должен быть подключен
#include <mmsystem.h>
DWORD fdwSound = SND_NOSTOP | SND_ASYNC | SND_NODEFAULT | SND_MEMORY;
PlaySound(lpbArray, hMod, fdwSound);
// в контексте данного топика важным является флаг SND_MEMORY:
// образ звука храниться в памяти
Под обработкой ошибки подразумевалось некоторое сообщение, если хочется, и, главное, НЕ выполнение последующего кода, иначе, в лучшем случае, при последующих вызовах функций API будут возвращаться ошибки (NULL), а могут случиться и более плачевные последствия
В приведенном коде использовались только функции API Windows и из стандартной сишной библиотеки, поэтому все должно работать и под VC, и под Builder'ом.