C/C++得到资源文件ID的流
struct InputStream
{
void*filestream;
int len;
int pos;
int read(byte *bt, int len_t)
{
if (this->pos >= this->len)
return -1;
for (int i = 0; i < len_t; i++)bt[i] = 0;
int l = 0;
int start = this->pos;
for (int i = start; i < start + len_t; i++, l++)
{
this->pos = i;
if (i >= len)
break;
bt[l] = ((byte*)(this->filestream))[i];
}
this->pos = this->pos + 1;
return l;
}
void debug()
{
//printf("debug %d\n", this->len);
}
};
InputStream * getResourceAsStream(int ID)
{
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hResource = FindResource(hModule, MAKEINTRESOURCE(ID), "DATA");
//printf("%s\n", hResource != NULL?"正确":"错误");
HGLOBAL hLoadedResource = LoadResource(hModule, hResource);
LPVOID pResourceData = LockResource(hLoadedResource);
DWORD dwResourceSize = SizeofResource(hModule, hResource);
InputStream*is = new InputStream;
is->filestream = pResourceData;
is->len = dwResourceSize;
is->pos = 0;
is->debug();
return is;
}