Dir = ( IMAGE_RESOURCE_DIRECTORY* )psResource;//root dir
Entry = ( IMAGE_RESOURCE_DIRECTORY_ENTRY* )( Dir + 1 );//first entry in root dir
int nCount = Dir->NumberOfIdEntries + Dir->NumberOfNamedEntries;
int i;
IMAGE_RESOURCE_DIRECTORY_ENTRY* pEntries[100];
int nEntries = 0;
//cycle on root dir entries
for( i = 0; i < nCount; i++ )
{
if( Entry->Id == 0x0e ) //icon group subdir
{
Dir = ( IMAGE_RESOURCE_DIRECTORY* )( psResource + Entry->OffsetToDirectory );
nCount = Dir->NumberOfIdEntries + Dir->NumberOfNamedEntries;
//scan icons dir
// each entry points to subdirectory
Entry = ( IMAGE_RESOURCE_DIRECTORY_ENTRY* )( Dir + 1 );
for( i = 0; i < nCount; i ++ )
{
pEntries[ i ] = new IMAGE_RESOURCE_DIRECTORY_ENTRY;
memcpy( pEntries[ i ], Entry, sizeof( IMAGE_RESOURCE_DIRECTORY_ENTRY ) );
Entry++;
}
//gather icons data
int j;
int nIcons;
IMAGE_RESOURCE_DATA_ENTRY* pData;
for( i = 0; i < nCount; i ++ )
{
//enter subdir
Dir = ( IMAGE_RESOURCE_DIRECTORY* )( psResource + pEntries[ i ]->OffsetToDirectory );
//scan each icon subdir
Entry = ( IMAGE_RESOURCE_DIRECTORY_ENTRY* )( Dir + 1 );