Войти

Показать полную графическую версию : Вложение файлов.


Chilli
03-12-2010, 21:57
Мне нужно к программе прикрепить некоторые файлы/папки, которые при выполнении должны извлекаться в указанную в коде директорию.
Файлы я добавил в качестве ресурсов, но каким образом указывать в коде директорию извлечения?
P.S. Относительно VC++ 2010.

Admiral
03-12-2010, 22:51
Chilli, прописать в ресурсах приложения
IDресурса RCDATA имя файла который нужно запаковать
а потом извлекать работая с соответственными функциями.
Как засунуть файл в ресурсы и достать его оттуда (http://sources.ru/cpp/faqs/75.htm)

Файлы я добавил в качестве ресурсов, но каким образом указывать в коде директорию извлечения?
По ссылки выше есть пример hFile=open("AnyFileName" ... где "AnyFileName" не только имя файла куда распаковать с ресурса, но и сам путь (который может содержать требуемую директорию).
Второй вариант: изменить текущею директорию приложения, на ту в которую нужно распаковать ресурс - SetCurrentDirectory.

Chilli
06-12-2010, 18:05
Admiral, из статьи по ссылке скопировал код и отредактировал под свое добро.
Сразу же подсветился параметр S_IWRITE, а еще мне стало не понятно, почему в таком разжеванном примере не объявлена переменная k...
После того, как я прописал
#define S_IWRITE 1
и проделкарировал k, то все заработало, но создался только пустой файл, и все.

Admiral
07-12-2010, 09:02
Chilli есть другой способ записи в файл
HANDLE hFile = CreateFile(ResName, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_ARCHIVE, NULL);

if (hFile != INVALID_HANDLE_VALUE)
{
DWORD dwDummy;
if (WriteFile(hFile, lpbArray, dwFileSize, &dwDummy, NULL))
bSuccess = true;
CloseHandle(hFile);
}

FreeResource(hGlob);
Где ResName путь куда записать файл. Так же используется как имя ресурса.
Пример ценен именно работой с ресурсами, способ записи использовался приведённый выше, по этому с нюансами S_IWRITE и k не столкнулся.




© OSzone.net 2001-2012