
hLB=CreateWindow
("LISTBOX",NULL,WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL|LBS_MULTIPLESEL,0,0,400,400,hW,NULL,hI,NULL);
SendMessage(hLB,LB_SETHORIZONTALEXTENT,256,0);
i=(int)SendMessage(hLB,LB_GETHORIZONTALEXTENT ,0,0);
TextOut(hD,300,0,s,strlen(itoa(i,s,10)));
(ただしchar s[99];と宣言されている)
として200文字の文字列を200個リストボックスに格納すると
垂直スクロールバーはできるのですが水平スクロールバーができず水平方向にオーバーフローした文字を見るためのスクロールもできません。
しかしTextOutの結果は256になります。
どうすれば水平スクロールバーを出すことができ水平スクロールできるようになるのでしょうか。
No.2ベストアンサー
- 回答日時:
あれ?正しく幅を設定すればスクロールバー消えるはずですけど。
消えないように(不要なときは使用不可)するには
LBS_DISABLENOSCROLLを指定する必要があります。
なんで、長さの計算が合っていないのでは?
固定値を入力するのではなく、ちゃんとGetTextExtentPoint等を使ってデバイスコンテキストから
必要なピクセル数求めないとダメですよ。
やっぱりおおちゃくは駄目ですね。
すべての項目文字の幅のなかの最大値を求めてそれで幅を設定しなければならないのですね。
リストコントロールがやってくれたらというのは贅沢ですね。
ありがとうございました。
No.1
- 回答日時:
LB_SETHORIZONTALEXTENTは、ピクセル数を指定します。
ソースで256と指定しているので、256ピクセル分しかリストの幅はないということになるので、256ピクセルより幅が広い場合はスクロールバーは出ません。
文字数ではないところに注意してください。
参考URL:http://www.microsoft.com/japan/developer/library …
ありがとうございました。解決しました。
SendMessage(hLB,LB_SETHORIZONTALEXTENT,16384,0);
とすれば動きました。
どうも符号付き2バイト整数のようで32768以上を設定すると駄目みたいですが余り大きく設定するとスクロール範囲が広がりすぎ利用しない方がましになってしまいます。
データ数が少なく垂直スクロールする必要が無いときには自動的に垂直スクロールバーが消えるのですが
文字列の長さが短くて水平スクロールする必要が無いときでも指定した長さ用の水平スクロールバーがでてしまします。
垂直スクロールバーと違って水平スクロールバーは自分で長さに応じて設定するしか仕方がないのでしょうか?
自動的に消えたり長さが自動的に合わされるような設定はないものでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- その他(プログラミング・Web制作) マウスオーバー→ホイール回転でスクロールできない 2 2022/10/31 10:06
- Visual Basic(VBA) エクセルから、パワーポイントのスライドを複数作成する。 1 2022/07/08 09:40
- その他(IT・Webサービス) このサイトのスクロール逆じゃないですか? 1 2022/10/05 20:48
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- PHP 空文字 "" ですが 空文字の意味を教えてください。 3 2022/08/05 03:51
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでワードアートや図を常に...
-
リストビューをスクロールさせ...
-
PDFを(htmlのように)無限に縦...
-
アクセスキーで画面スクロール...
-
パソコンの画面よりも大きい画...
-
画像のようにとあるサイトの横...
-
マウスオーバー→ホイール回転で...
-
Visual Basicから Spreadのスク...
-
ページ訪問時にiframe内を自動...
-
マウスでコロコロしたいんですが…
-
MFCでのスクロールバーの扱い
-
エクセルVBAでフォームのListbo...
-
複数の画像を横にスクロールさ...
-
ブラウザのスクロールバーでス...
-
webページで横方向にアンカーを...
-
文章の自動スクロール
-
javascriptで開いたウィンドウ...
-
デジタル時計の時刻合わせの方...
-
Outlookでこのような表示がされ...
-
数が一定でない複数の条件の指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでワードアートや図を常に...
-
PDFを(htmlのように)無限に縦...
-
エクセルVBAでフォームのListbo...
-
リストビューをスクロールさせ...
-
アコーディオンで開かれたパネ...
-
Visual Basicから Spreadのスク...
-
大きい表へのスクロールバーの...
-
マウスオーバー→ホイール回転で...
-
vb,netでtextboxの文字を右から...
-
ExcelVBAで他のアプリをスクロ...
-
新着情報などをスクロールしな...
-
マウスでコロコロしたいんですが…
-
リストビューのスクロールバー...
-
Excelで一部分だけを常に表示さ...
-
エクセルで行を固定しその下か...
-
マウスホイールでスクロールで...
-
文章の自動スクロール
-
html js 横軸の長いチャート
-
上下キーを押すと、ページスク...
-
C#:ListViewでのスクロールイベ...
おすすめ情報