Страница 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'ом. |