リストコントロールの表にフォーカスを当てた状態で、キーボードの矢印キー等で、スクロールバーを移動させた場合のイベントを受ける方法はあるでしょうか。
直接は受け取れないかも知れませんが…
検出する方法ならありますかねぇ。
キーボードで操作するとLVN_KEYDOWNが通知されます。
予めリストコントロールの最初のアイテムの座標をListView_GetItemPosition()などで取得しておいて、左上のアイテムのインデックスを記録しておき、
LVN_KEYDOWNの通知があったときにListView_HitTest()で左上のアイテムの値が変化したかを確認する。
とか。
# スクロールバーで移動された場合もアイテムのインデックスを更新しておく必要はあるでしょうな。
LVN_KEYDOWNでどのキーが押下されたは判定可能なはずなので、不要なキー(スクロールを引き起こさないキー)の場合は無視するとかも可能でしょう。
横スクロールの場合だとちょいと面倒かも知れませんけどね。
返信遅くなりました。
上記を参考に解決できましたありがとうございます。
ツイート | ![]() |