/// <summary>
/// Create a resource of a given type.
/// </summary>
/// <param name="hModule">Module handle.</param>
/// <param name="hResourceGlobal">Pointer to the resource in memory.</param>
/// <param name="type">Resource type.</param>
/// <param name="name">Resource name.</param>
/// <param name="wIDLanguage">Language ID.</param>
/// <param name="size">Size of resource.</param>
/// <returns>A specialized or a generic resource.</returns>
protected Resource CreateResource(
IntPtr hModule,
IntPtr hResourceGlobal,
ResourceId type,
ResourceId name,
UInt16 wIDLanguage,
int size)
{
if (type.IsIntResource())
{
switch (type.ResourceType)
{
case Kernel32.ResourceTypes.RT_VERSION:
return(new VersionResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_GROUP_CURSOR:
return(new CursorDirectoryResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_GROUP_ICON:
return(new IconDirectoryResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_MANIFEST:
return(new ManifestResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_BITMAP:
return(new BitmapResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_MENU:
return(new MenuResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_DIALOG:
return(new DialogResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_STRING:
return(new StringResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_FONTDIR:
return(new FontDirectoryResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_FONT:
return(new FontResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
case Kernel32.ResourceTypes.RT_ACCELERATOR:
return(new AcceleratorResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
}
}
return(new GenericResource(hModule, hResourceGlobal, type, name, wIDLanguage, size));
}