我们的WPF应用程序中有一个HwndHost UIElement用于显示Direct3d图形,我找到为HwndHost UIElment设置游标的唯一方法是调用Win32 API SetCursor()。我们所有的游标都是托管程序集中的资源,我宁愿不改变它,但我无法通过任何Win32 API(如LoadImage())找到加载其中一个游标的方法。
有没有人知道如何获取一个句柄(hCursor)到一个托管程序集中的资源?
或者,是否有另一种方法可以在显示Direct3D图形的HwndHost上设置光标?
答案 0 :(得分:1)
我之前在这种情况下使用的技术是:
DllImport("user32.dll", EntryPoint = "LoadCursorFromFileW", CharSet = CharSet.Unicode)
public static extern IntPtr LoadCursorFromFile(String str);
...save your cursor into a temporary file...
IntPtr hCursor = DllImport.LoadCursorFromFile(sFilename);
...use hCursor in the SetCursor...
.cur
文件作为"Embedded Resource"
Stream
GetManifestResourceStream
到该光标
FileStream
使用FileMode.Create
,如果需要FileAttributes.Temporary
)LoadCursorFromFile
从文件加载数据并创建一个光标句柄,然后可以在SetCursor中使用。