CreateIconFromResource (user32)
Last changed: -94.233.13.80

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern IntPtr CreateIconFromResource(byte[] presbits, uint dwResSize, bool fIcon, uint dwVer);

VB.NET Signature:

<DllImport("user32.dll")> _
Private Shared Function CreateIconFromResource(presbits As Byte(), dwResSize As UInteger, fIcon As Boolean, dwVer As UInteger) As IntPtr
End Function

User-Defined Types:

Existing Methods Modified

Notes:

Awesome Example, Powerful and Accurate Representation

Yvan say this about this example:

Why I posted this example: I looked and found no working examples

I modified what I found to get a working example, this works ok

This is not a comlete invention of the class, simply a working example I produced !!!

Tips & Tricks:

See below for 2 examples loaded & embedded mouse cursors examples

Sample Code:

added by Yvan Genesse

Alternative Managed API:

Solved by Yvan Genesse Nov. 28, 2010

Documentation

// used for loading animated mouse cursors from file loading example provided below

// in my new improved class AdvancedCursorsFromEmbededResources

// this is a previouslly known released class item

/*
    // in your form C#
    try
    {
    // from file
    this.Cursor = AdvancedCursors.Create(Path.Combine(Application.StartupPath, "flower_anim.ani"));
    }
    catch (Exception err)
    {
    MessageBox.Show(err.Message);
    }

    */

public class AdvancedCursors

{

    [DllImport("User32.dll")]
    private static extern IntPtr LoadCursorFromFile(String str);

    public static Cursor Create(string filename)
    {
    IntPtr hCursor = LoadCursorFromFile(filename);

    if (!IntPtr.Zero.Equals(hCursor))
    {
        return new Cursor(hCursor);
    }
    else
    {
        throw new ApplicationException("Could not create cursor from file " + filename);
    }
    }

}

// from resources modification here is : byte[] variable resource in the call

// modified class by Yvan Genesse

public class AdvancedCursorsFromEmbededResources

{

    // modified by Yvan Genesse November 29 2010

    // C# example tested in MS Visual Studio 2010 Ultimate version
    // University Student in E-Business @ Laurentian University

    // in your form code
    /*
    try
    {
    // from file
    //this.Cursor = AdvancedCursors.Create(Path.Combine(Application.StartupPath, "flower_anim.ani"));
    // from resouces   modification here is :   byte[] resource in the call
    byte[] Embeded_Cursor_Resource = Properties.Resources.flower_anim;  // the animate cursor desired
    this.Cursor = AdvancedCursorsFromEmbededResources.Create(Embeded_Cursor_Resource);

    // or this way also works
    this.Cursor = AdvancedCursorsFromEmbededResources.Create(Properties.Resources.flower_anim);
    }
    catch (Exception err)
    {
    MessageBox.Show(err.Message);
    }

    */

    [DllImport("user32.dll")]
    static extern IntPtr CreateIconFromResource(byte[] presbits, uint dwResSize, bool fIcon, uint dwVer);

    // modification here is :   byte[] resource in the call      
    public static Cursor Create( byte[] resource)
    {
        IntPtr myNew_Animated_hCursor;

        //byte[] resource = Properties.Resources.flower_anim;

            myNew_Animated_hCursor = CreateIconFromResource(resource, (uint)resource.Length, false, 0x00030000);

        if (!IntPtr.Zero.Equals(hCursor))
            {
                // all is good
                    return new Cursor(myNew_Animated_hCursor);
           }
            else
           {  // resource wrong type or memory error occurred
        // normally this resource exists since you had to put  Properties.Resources. and a resource would appear and you selected it
        // the animate cursor desired  is the error generator since this call is not required for simple cursors

              throw new ApplicationException("Could not create cursor from Embedded resource ");
            }        
    }    

}