[DllImport("user32.dll")]
static extern IntPtr CreateIconFromResource(byte[] presbits, uint dwResSize, bool fIcon, uint dwVer);
<DllImport("user32.dll")> _
Private Shared Function CreateIconFromResource(presbits As Byte(), dwResSize As UInteger, fIcon As Boolean, dwVer As UInteger) As IntPtr
End Function
Existing Methods Modified
Awesome Example, Powerful and Accurate Representation
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 !!!
See below for 2 examples loaded & embedded mouse cursors examples
added by Yvan Genesse
Solved by Yvan Genesse Nov. 28, 2010
// 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
{
// created 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);
}
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 hCursor;
//byte[] resource = Properties.Resources.flower_anim;
hCursor = CreateIconFromResource(resource, (uint)resource.Length, false, 0x00030000);
if (!IntPtr.Zero.Equals(hCursor))
{
// all is good
return new Cursor(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 ");
}
}
}