如何使用C#将Cursor转换为可以保存为.resx文件的图像?

时间:2011-04-14 17:06:30

标签: c# dll cursor resx

我正在尝试从Visual Basic中编译的dll文件中读取光标图像。到目前为止,该程序可以很好地提取字符串和位图,但它不喜欢删除游标。拔出资源后,程序会将它们保存在.resx文件而不是dll中。我遇到了一些麻烦,因为我不认为.resx文件直接支持游标。

这是我到目前为止所做的:

    [DllImport("user32.dll")]
    static extern IntPtr LoadCursor(IntPtr hInstance, uint lpCursorName);

    [DllImport("kernel32.dll")]
    public static extern IntPtr LoadLibrary(string dllToLoad);

    var Lib = LoadLibrary("myLib.dll");

            IntPtr cRes = LoadCursor(Lib,101);
            Cursor c = new Cursor(cRes);
            writer.AddResource("cursor_" + 101, c);

这适用于其他文件,但是当我尝试使用游标执行此操作时,它会抛出“InvalidOperationException”并说图像格式无效。它实际上将句柄加载到Cursor中没有问题,但是当我尝试将其保存为.resx时会抛出异常。我已经尝试将光标加载为位图,但这只是加载一个空白图像。 CursorConverter似乎也不适用于图像。

因此,如果有人对如何解决这个问题有任何想法,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

LoadCursor的文档说它已被LoadImage取代。你尝试过使用它吗?