从资源加载嵌入的动画光标

我在资源中有一个动画光标文件(* .ani),并希望在我的应用程序中将其显示为光标。 如何从资源中加载它?

我在互联网上查了一下,但是当你有一个真正的文件并且它没有嵌入资源时,只有方法可以显示它。

//来自资源修改,这里是:调用中的byte []变量资源

//由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 "); } } } 

将ani文件作为资源嵌入,并在完成后使用Windows函数CreateIconFromResource创建它和DestroyIcon。

 IntPtr hCursor; try { hCursor = CreateIconFromResource(resource, (uint)resource.Length, false, 0x00030000); this.Cursor = new Cursor(hCursor); ... } finally { this.Cursor = Cursors.Normal; DestroyIcon(hCursor); } 
Interesting Posts