mirror of
https://github.com/Fatmike-GH/Fatpack
synced 2026-06-06 15:44:28 +00:00
42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
#include "ResourceLoader.h"
|
|
#include "..\ApiCaller\ApiCaller.h"
|
|
|
|
namespace ResourceLoader
|
|
{
|
|
ResourceLoader::ResourceLoader()
|
|
{
|
|
}
|
|
|
|
ResourceLoader::~ResourceLoader()
|
|
{
|
|
}
|
|
|
|
BYTE* ResourceLoader::LoadResource(LPCWSTR resourceName, LPCWSTR resourceType, DWORD& resourceSize)
|
|
{
|
|
resourceSize = 0;
|
|
|
|
HMODULE moduleHandle = ApiCaller::ApiCaller::Instance().CallGetModuleHandle(nullptr);
|
|
HRSRC resourceHandle = ApiCaller::ApiCaller::Instance().CallFindResourceW(moduleHandle, resourceName, resourceType);
|
|
if (resourceHandle == nullptr) return nullptr;
|
|
|
|
resourceSize = ApiCaller::ApiCaller::Instance().CallSizeofResource(moduleHandle, resourceHandle);
|
|
if (resourceSize == 0) return nullptr;
|
|
|
|
HGLOBAL resourceDataHandle = ApiCaller::ApiCaller::Instance().CallLoadResource(moduleHandle, resourceHandle);
|
|
if (resourceDataHandle == nullptr) return nullptr;
|
|
|
|
LPVOID resourceData = ApiCaller::ApiCaller::Instance().CallLockResource(resourceDataHandle);
|
|
if (resourceData == nullptr) return nullptr;
|
|
|
|
BYTE* buffer = new BYTE[resourceSize];
|
|
memcpy(buffer, resourceData, resourceSize);
|
|
return buffer;
|
|
}
|
|
|
|
void ResourceLoader::Free(BYTE* resourceBuffer)
|
|
{
|
|
if (resourceBuffer == nullptr) return;
|
|
delete[] resourceBuffer;
|
|
}
|
|
}
|