リストビューの項目を選択するとその内容に応じてダイアログの内容を変化させるプログラムを作っています。
その内容の1つにスピンコントロール付きのエディットボックスがあるのですが、UDM_SETPOSで値を設定すると何故かリストビューの選択が解除(LVS_SHOWSELALWAYSを指定していても)されてしまいます。
これを防ぐ、あるいはUDM_SETPOSの代替手段はないでしょうか。
どうかご教授お願い致します。
環境は
WindowsXP
VC++6.0
です。
フォーカスが移ったので、ハイライト処理しなくなってるだけでは?
そもそも、選択解除とは、見た目のことですか?
それとも、LVM_GETITEMとかして、選択解除してるとのことですか?
UDM_SETPOSの前後で選択項目のインデクスを取得してみたところ、UDM_SETPOS後では必ず-1が入っているので数字としての選択自体が解除されてしまうようです。
UDM_SETPOS直後にLVM_SETITEMでプログラム的に選択状態を作り出してやっても無駄(その関数内では選択状態にはなっているが関数を抜けたとたん非選択になっている)なようなのでUDM_SETPOSによって何らかのウィンドウズメッセージが発信されているようなのです。
すみません、UDM_SETPOSによって値が変更されたときにリストビューを再構築するようになってまして、再選択させるのを忘れてました(汗)
お騒がせしました。
ツイート | ![]() |