Я повторно использую старый код (изначально разработанный на c, а не C++) с некоторыми функциями для открытия/чтения/управления текстовыми файлами. Путь к текстовым файлам передается функциям в виде строки (char *), затем открывается с использованием: FileToUse = fopen(filename, "rb");
, затем используются несколько вызовов fread()
и fseek()
. Этот код, как известно, работает для внешних текстовых файлов, но теперь я хотел бы включить текстовые файлы в качестве ресурсов в свой проект (MFC C++ в visual studio).Ресурс вместо внешнего файла C++
Я нашел несколько примеров в Интернете о том, как использовать rusulting ресурсы в этом коде:
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hResource = FindResource(hInst, MAKEINTRESOURCE(IDR_TEXTFILE1), "TEXTFILE");
if (hResource){
HGLOBAL hLoadedResource = LoadResource(hInst, hResource);
if (hLoadedResource){
const char* pResource = LockResource(hLoadedResource);
if (pResource){
DWORD dwResourceSize = SizeofResource(hInst, hResource);
if (0 != dwResourceSize){ // if(FileToUse){
memcpy(&Buffer, pResource, (15 * 2)); // fread($Buffer, 15, 2, FileToUse);
pTemp = pResource + 200; // fseek(FileToUse, 200, SEEK_SET);
pTemp = pTemp + 100; // fseek(FileToUse, 100, SEEK_CUR);
pTemp = pResource + (dwResourceSize - 1) - 40; // fseek(FileToUse, -40, SEEK_END);
}
}
}
}
Я заменил Fread вызов тетсру(), как показано на рисунке, но я пропускаю возвращаемое значение FREAD (фактические прочитанные элементы), а в исходном коде filepointer был перемещен fseek, интересно, правильно ли мой подход с использованием временного указателя.
Моя конечная цель состоит в том, чтобы смоделировать Fread и FSEEK вызовы на ресурсы с аналогичными прототипы функций:
size_t resread(void* buffer, size_t size, size_t count, char* resource);
int resseek(char* resource, long offset, int origin);
Любые предложения очень ценятся.
Этот вопрос, кажется, полностью зависит от конкретного окна. Вы должны добавить такой тег. – bjhend
@bjhend Код загрузки ресурсов загрузки зависит от Windows, но он уже получил это право. Вопрос в том, чтобы дублировать fread, так что он не агностик. –