下面是完整的例子,可以通过命令行编译即可看到效果。
using
System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
namespace ColorCursor
{
/// <summary>
/// 本例子的作用: 在.NET中实现自定义光标。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
[DllImport( " user32.dll " )]
public static extern IntPtr LoadCursorFromFile( string fileName );
[DllImport( " user32.dll " )]
public static extern IntPtr SetCursor( IntPtr cursorHandle );
[DllImport( " user32.dll " )]
public static extern uint DestroyCursor( IntPtr cursorHandle );
[STAThread]
static void Main()
{
Application.Run( new Form1());
}
public Form1()
{
Cursor myCursor = new Cursor(Cursor.Current.Handle);
IntPtr colorCursorHandle = LoadCursorFromFile( @" C:WINNTCursorsdinosau2.ani " );
// dinosau2.ani为windows自带的光标:
myCursor.GetType().InvokeMember( " handle " ,BindingFlags.Public |
BindingFlags.NonPublic | BindingFlags.Instance |
BindingFlags.SetField, null ,myCursor,
new object [] { colorCursorHandle } );
this .Cursor = myCursor;
}
}
}
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
namespace ColorCursor
{
/// <summary>
/// 本例子的作用: 在.NET中实现自定义光标。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
[DllImport( " user32.dll " )]
public static extern IntPtr LoadCursorFromFile( string fileName );
[DllImport( " user32.dll " )]
public static extern IntPtr SetCursor( IntPtr cursorHandle );
[DllImport( " user32.dll " )]
public static extern uint DestroyCursor( IntPtr cursorHandle );
[STAThread]
static void Main()
{
Application.Run( new Form1());
}
public Form1()
{
Cursor myCursor = new Cursor(Cursor.Current.Handle);
IntPtr colorCursorHandle = LoadCursorFromFile( @" C:WINNTCursorsdinosau2.ani " );
// dinosau2.ani为windows自带的光标:
myCursor.GetType().InvokeMember( " handle " ,BindingFlags.Public |
BindingFlags.NonPublic | BindingFlags.Instance |
BindingFlags.SetField, null ,myCursor,
new object [] { colorCursorHandle } );
this .Cursor = myCursor;
}
}
}