dポイントプレゼントキャンペーン実施中!

はじめまして,calkと申します。

WindowsAPI(C/C++)のツリービューなのですが,「現在どの項目にカーソルがあるか」という情報を取得するにはどうすればよいのでしょうか。
選択されている項目は,TreeView_GetSelection()を使うことで取得することが出来たのですが,カーソルとなると上手くいきません。

現在はマウスカーソルの座標で判断しているのですが,何か他に方法はないものでしょうか。

A 回答 (1件)

TreeView はまだ使ったことないので,マニュアル見ただけでの回答ですが….



> 「現在どの項目にカーソルがあるか」という情報を
> 取得するにはどうすればよいのでしょうか。

これがもし,「カーソルが別の項目に移動したら WM_NOTIFY で知らせてほしい」
という意味であれば,TreeView のマニュアルを見る限り,どうやらそういう
通知メッセージは存在しないようです.

(ある場所に一定時間とどまったら通知する,ということであれば NM_HOVER
が使えるかもしれません.)


> 現在はマウスカーソルの座標で判断しているのですが,

そのマウスカーソル座標の取得は NM_NCHITTEST で行っているのでしょうか?
もしそうであれば,NMMOUSE 構造体に TreeView 固有の情報は入ってないでしょうか?
(カーソル位置の項目のハンドルとか.)

また,その判断方法というのは TreeView_HitTest() マクロまたは
TVM_HITTEST メッセージを使った方法でしょうか?
もしそうでなければ,これらのいずれかを使う方がいいと思います.
(もし既に使っておられるのなら余計なお世話ですが.)
    • good
    • 0
この回答へのお礼

noocyteさん

座標は単純にWM_NOTIFYが送られてきた時にGetCursorPos()で取得しScreenToClient()を使いツリービュー上の座標に変換していました。

よく考えてみれば,この座標を基にTreeView_HitTest()を使い,その項目の情報を取得すればよかったのですね。
試しにTreeView_HitTest()とTreeView_GetItem()を用いてみたところ,無事解決いたしました。

どうもありがとうございました。

お礼日時:2006/11/26 14:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!