0

Direct3dグラフィックを表示するために使用されるWPFアプリケーションにHwndHostUIElementがあり、HwndHost UIElmentのカーソルを設定する唯一の方法は、Win32 API SetCursor()を呼び出すことです。すべてのカーソルはマネージドアセンブリのリソースであり、変更したくないのですが、LoadImage()などのWin32APIを介してこれらのカーソルの1つをロードする方法を見つけることができませんでした。

管理対象アセンブリのリソースであるカーソルへのhandle(hCursor)を取得する方法を知っている人はいますか?

または、Direct3Dグラフィックを表示するHwndHostにカーソルを設定する別の方法はありますか?

4

1 に答える 1

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.CreateFileAttributes.Temporary
  • ファイルからデータをロードし、SetCursorで使用LoadCursorFromFileできるカーソルハンドルを作成するために使用します。
  • 一時ファイルをクリーンアップします

http://support.microsoft.com/kb/319292

于 2012-08-28T10:40:14.233 に答える