VisualBasic6.0について質問です。
VB標準のListBoxだと横に長い文字列を表示した際、右端が切れてしまいます。
そのためListBox に水平スクロールバーを表示する方法を以下のページを参考にして作りました。
http://frog.raindrop.jp/knowledge/archives/000809.html
ちゃんとうまく行き喜んでいたのですがそのListBoxは
他のコントロールのイベントにより表示する項目を動的に変えています。
そのため長い文字列を表示後に短い文字列を表示したりするのですが
その際に短い文字列にもかかわらず水平スクロールバーが出たままになってしまいます。
解決策として
1.上記のサイトでやってる記述にある「Windows SDK, API」で水平スクロールバーを消す。
2.表示項目を変える際、リストボックス自体をLoad時の状態に戻してから値をセットしなおす。
かなと思っています。
ただどちらともどうすればいいのか全くわかりません。
ご教授よろしくお願いします。
リストボックスのChangeイベントでフックして、リストボックスの内容が変更された時に、それぞれのリストボックスに表示されている文字列の長さを取得して、もっとも長いもの長さをSendMessageで設定すると、消えると思います。
LB_SETHORIZONTALEXTENTは、リストボックスに最大の表示幅の設定値を教えるメッセージだと思います。
ありがとうございます。
難しく考えすぎてたみたいです。
ロジックを毎回最大値を取得してから設定するように変えたら出来ました!
お恥ずかしいですが助かりました。