using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Runtime.InteropServices; using System.IO; namespace Vestris.ResourceLib { /// /// This structure depicts the organization of data in a hardware-independent cursor resource. /// public class CursorDirectoryResource : DirectoryResource { /// /// A hardware-independent cursor resource. /// /// Module handle. /// Resource ID. /// Resource type. /// Resource name. /// Language ID. /// Resource size. internal CursorDirectoryResource(IntPtr hModule, IntPtr hResource, ResourceId type, ResourceId name, UInt16 language, int size) : base(hModule, hResource, type, name, language, size) { } /// /// A new hardware-independent cursor resource. /// public CursorDirectoryResource() : base(Kernel32.ResourceTypes.RT_GROUP_CURSOR) { } /// /// A new collection of cursors that can be embedded into an executable file. /// public CursorDirectoryResource(IconFile iconFile) : base(Kernel32.ResourceTypes.RT_GROUP_CURSOR) { for (UInt16 id = 0; id < iconFile.Icons.Count; id++) { CursorResource cursorResource = new CursorResource( iconFile.Icons[id], new ResourceId(id), _language); // cursor structure abuses planes and bits per pixel for cursor data cursorResource.HotspotX = iconFile.Icons[id].Header.wPlanes; cursorResource.HotspotY = iconFile.Icons[id].Header.wBitsPerPixel; Icons.Add(cursorResource); } } } }