- - PR -
ドラッグ中のマウスカーソルについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-27 02:35
こんばんは。VB.NETの初心者です。
リストビューにて選択したItemをドラッグ中に表示される マウスカーソルを「選択Itemが半透明状態のカーソル (Windosでファイルをドラッグした時のように)」 にしたいのですが、方法がわからず困っています。 どなたか、ご存知でしたら教えて下さい。 <開発環境> VS2003 VB.NET Microsoft .NET Framework 1.1 | ||||||||
|
投稿日時: 2005-11-27 07:25
こんにちは。
残念ながら今のところ(.NET Framework 1.1以前)では、 本来のリストビューの機能の多くがサポートされていないようです。 ・仮想リストビュー ・カスタムドロー ・挿入マーク ・グループ ビュー など リストビューのドラッグイメージ作成も、Frameworkからでは、できないようです。 #.NETに詳しくないので間違いがあったらスイマセン なので、ご質問の件に関しては、 P/Invoke(Windows API)で直接、リストビューを操作するしかなさそうです。 やり方は、 1.リストビューに対し、SendMessage関数でLVM_CREATEDRAGIMAGEメッセージを送り ドラッグ用のイメージリストを作成します。 2.リストビューアイテムのドラッグ開始時に、1.で作成したイメージリストに対して ImageList_BeginDrag関数とImageList_DragEnter関数を呼び出します。 3.ドラッグ移動時に、作成したイメージリストに対して ImageList_DragMove関数を呼び出します。 4.ドラッグ終了時、ドロップ時に ImageList_EndDrag関数とImageList_DragLeave関数を呼び出します。 以上で、半透明状態のドラッグイメージを描画することができます。 #ツリービューに対しても、TVM_CREATEDRAGIMAGEメッセージを送ってやれば 同様に半透明のドラッグイメージを描画することができます。 | ||||||||
|
投稿日時: 2005-11-27 13:43
Tdnr_Symさん返答ありがとうございます。
以下(●)にコメント致します。
参考になるご意見ありがとうございます。 一応、Frameworkを使用した方法をもう少し、粘って調べてみます。 今の所、私が調べた状況では @カーソルファイルを作成 AGiveFeedbackイベントにて、「e.UseDefaultCursors = False」で 既定のカーソルを抑止。 BGiveFeedbackイベントにて、現在のカーソルイメージを 「Cursor.Current = カーソルファイル」で代入。 とこんな感じです。 ただ、この方法だとカーソルイメージが決まってしまう為、 選択したItemを半透明のドラッグイメージとして描画する事が できそうもありませんでした。
この方法も試してみます。ありがとうございました。 |
1