Помещение файла в ресурсы и извлечение его из ресурсов
Страница 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'ом.
 
« Предыдущая статья   Следующая статья »