• ベストアンサー

マウス座標からリストボックスのリストインデックスを知る方法

リストボックスをドラッグアンドドロップのドロップ先とするプログラムを作成しているのですが、どのリストボックス項目にドロップされたかを知る方法を教えてください。 ドロップ時にはマウス座標が渡されるのですが、この座標からリストインデックスをどのようにして求めたらよいか分からずにいます。 対象としているプログラムは、フォントサイズもリストボックスのサイズも固定ですので、以下のようなコーディングでしのげていますが、フォントサイズやリストボックスサイズが実行時に変えられても対応できるような、もっとスマートな方法はないでしょうか? リストインデックス = リストボックス.TopIndex + マウスY座標 \ リストボックスの項目の高さ(9ptフォントで180ぐらい?)

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

リストボックスの項目の高さ =Screen.TwipsPerPixelY * _ SendMessage(List1.hwnd, LB_GETITEMHEIGHT, 0, vbNullString) 参考URLのdraglist?.zipにサンプルがあります

参考URL:
http://www.vb-helper.com/HowTo/ 
akym2
質問者

お礼

ありがとうございます。 ご紹介いただいたURLは英語なのが多少つらいですが、色々参考になりそうです。 紹介いただいたURLはzipファイルの一覧でしたので、以下のURLを"お気に入り"に追加しました。 http://www.vb-helper.com/howto.htm

その他の回答 (1)

回答No.1

参考URLが答になっていると思います。 WindowsAPIを使ったりして、あまりスマートとは思いませんが…

参考URL:
http://www.microsoft.com/japan/support/kb/articles/J042/4/50.htm
akym2
質問者

お礼

ありがとうございます。 Knowledge Base…基本ですね。 最初から検索すべきでした。

関連するQ&A