自分では手も足も出ないのでスマートな解決方法を教えていただいた方に最低100ポイント差し上げます。

VisualBasic6.0について質問です。
VB標準のListBoxだと横に長い文字列を表示した際、右端が切れてしまいます。
そのためListBox に水平スクロールバーを表示する方法を以下のページを参考にして作りました。

http://frog.raindrop.jp/knowledge/archives/000809.html

ちゃんとうまく行き喜んでいたのですがそのListBoxは
他のコントロールのイベントにより表示する項目を動的に変えています。
そのため長い文字列を表示後に短い文字列を表示したりするのですが
その際に短い文字列にもかかわらず水平スクロールバーが出たままになってしまいます。

解決策として
1.上記のサイトでやってる記述にある「Windows SDK, API」で水平スクロールバーを消す。
2.表示項目を変える際、リストボックス自体をLoad時の状態に戻してから値をセットしなおす。
かなと思っています。
ただどちらともどうすればいいのか全くわかりません。
ご教授よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/10/09 11:03:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:yna1962 No.1

回答回数26ベストアンサー獲得回数3

ポイント100pt

 リストボックスのChangeイベントでフックして、リストボックスの内容が変更された時に、それぞれのリストボックスに表示されている文字列の長さを取得して、もっとも長いもの長さをSendMessageで設定すると、消えると思います。


 LB_SETHORIZONTALEXTENTは、リストボックスに最大の表示幅の設定値を教えるメッセージだと思います。

id:matttsu

ありがとうございます。

難しく考えすぎてたみたいです。

ロジックを毎回最大値を取得してから設定するように変えたら出来ました!

お恥ずかしいですが助かりました。

2006/10/09 11:02:50

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません