56 lines
2 KiB
C#
56 lines
2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.ComponentModel;
|
|
using System.Runtime.InteropServices;
|
|
using System.IO;
|
|
|
|
namespace Vestris.ResourceLib
|
|
{
|
|
/// <summary>
|
|
/// This structure depicts the organization of data in a hardware-independent cursor resource.
|
|
/// </summary>
|
|
public class CursorDirectoryResource : DirectoryResource<CursorResource>
|
|
{
|
|
/// <summary>
|
|
/// A hardware-independent cursor resource.
|
|
/// </summary>
|
|
/// <param name="hModule">Module handle.</param>
|
|
/// <param name="hResource">Resource ID.</param>
|
|
/// <param name="type">Resource type.</param>
|
|
/// <param name="name">Resource name.</param>
|
|
/// <param name="language">Language ID.</param>
|
|
/// <param name="size">Resource size.</param>
|
|
internal CursorDirectoryResource(IntPtr hModule, IntPtr hResource, ResourceId type, ResourceId name, UInt16 language, int size)
|
|
: base(hModule, hResource, type, name, language, size)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// A new hardware-independent cursor resource.
|
|
/// </summary>
|
|
public CursorDirectoryResource()
|
|
: base(Kernel32.ResourceTypes.RT_GROUP_CURSOR)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// A new collection of cursors that can be embedded into an executable file.
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|