Winformsを使用するVB.Netで、画像がフォームを離れる場合でも、カーソルに沿って画像を作成するにはどうすればよいですか?ドラッグアンドドロップ操作中にこれを実行したいと思います。BCLおよび/またはGDIは、P/Invokesよりも私のユースケースに適しています。
PeaZipに精通している場合は、そのインターフェイスからファイルをドラッグするときに、この種の処理を実行します。
Winformsを使用するVB.Netで、画像がフォームを離れる場合でも、カーソルに沿って画像を作成するにはどうすればよいですか?ドラッグアンドドロップ操作中にこれを実行したいと思います。BCLおよび/またはGDIは、P/Invokesよりも私のユースケースに適しています。
PeaZipに精通している場合は、そのインターフェイスからファイルをドラッグするときに、この種の処理を実行します。
P / Invokesでそれを行う方法については:
CodeProject:カスタムマウスカーソル(VB.NET)
記事からの重要なもの:
<DllImport("user32.dll", EntryPoint:="CreateIconIndirect")> _
Private Shared Function CreateIconIndirect(ByVal iconInfo As IntPtr) As IntPtr
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function DestroyIcon(ByVal handle As IntPtr) As Boolean
End Function
<DllImport("gdi32.dll")> _
Public Shared Function DeleteObject(ByVal hObject As IntPtr) As Boolean
End Function
これを行う最も簡単な方法は、マウスカーソルをデフォルトのマウスカーソルとそれに続く画像の合成画像に変更するだけのようです。次に、終了したら、デフォルトのマウスカーソルに戻します。
P / Invokesを使用してこれを行う方法はいくつかありますが、ここでは、P/Invokesを使用せずにこれを行う方法についての理論を示します。例では、P / Invokesに出くわしましたが、主に、作成されてアンマネージメモリにマーシャリングされたカーソル構造へのポインタまたはカーソル構造へのポインタを取得するために使用されます。次に、ポインターがSystem.Windows.Forms.Cursorクラスのコンストラクターに渡されます。
ただし、メモリストリームを受け入れるカーソルクラスには過負荷があります。同じカーソルファイル構造をメモリストリームで構築できる場合は、コンストラクタに渡すことができます。これにより、カーソルを変更できます。'cur'イメージファイルは'ico'ファイルと非常によく似ており、かなり単純です。これは、小さなヘッダー、画像ディレクトリ、そして最後に画像データ自体(ICOファイル形式のWikipediaエントリ)で構成されます。これを構築してメモリストリームに書き出すのはそれほど難しいことではありません。