WinXP,SDKで開発しています。
今、最大サイズ画面の右側にあるコンボボックスのリスト部分が表示仕切れなくて困っています。
実際のコンボボックスは小さく、リスト表示の時に大きくしています。
SendDlgItemMessage(hwnd, IDC_COMBO1, CB_SETDROPPEDWIDTH, 240, 0L);
このサイズで丁度リストの中身が見えるのですが、リストが画面からはみ出しています。
そこで、リストのサイズを200くらいにして(200で画面に収まります)水平スクロールを表示したいのですがうまく行きません。
ShowScrollBar()
で表示出来るかと思ったのですが、渡すウィンドウハンドルが分からないのです。
おそらくリストのウィンドウハンドルだと思うのですが…
このリストのウィンドウハンドルを取得する方法がよく分からないのです。
GetComboBoxInfo()
という関数があるようなのですが、コンパイルエラーになってしまって先にすすみません。(定義されていない識別子)
そもそも考え方を間違えているのでしょうか。
もっと簡単な方法がありますか?
アドバイスをお願い致します。
No.3ベストアンサー
- 回答日時:
★次の1行で良いと思います。
SendMessage( hWndCombo, CB_SETHORIZONTALEXTENT, ピクセル幅, 0 );
※コンボボックスのスタイルに水平スクロールバーを持つスタイルを設定します。
※このスタイルがないと CB_SETHORIZONTALEXTENT メッセージは無効になります。
※WS_HSCROLLスタイルを参照のこと。
ご回答ありがとうございます。
CB_SETHORIZONTALEXTENTはやってみたのですが、水平スクロールが出てこなかったので諦めていました。
WS_HSCROLLスタイルも、リソースエディタを使ってコンボボックスを生成していたため発見出来ませんでした。(リソースエディタには無いのでしょうか?)
WS_HSCROLLスタイルを追加するのに苦労しましたが、結果きちんと水平スクロールが表示されました。
アドバイス、ありがとうございました。助かりました。
No.4
- 回答日時:
ダウンロードセンターなどでPlatformSDKをダウンしてみてはいかがでしょう
http://www.microsoft.com/msdownload/platformsdk/ …
上記からアクセスしてみてください
WebInstall遷移すると思います
ISOイメージやCAB形式のリンクも遷移後のページの下部のほうにあります
ご回答ありがとうございます。
早速ダウンロードしてテスト環境を整えて水平スクロールが表示される事が確認出来ました。
ありがとうございます。
複数人で開発を行っているために自分だけ環境を変えての開発が難しいので、今回Oh-Orangeさまの手法を取らせて頂いたのですが、今後開発環境を変えていった場合に利用出来る事が分かり、大変助かりました。
何度もアドバイス頂き感謝しております。
ありがとうございました。
No.1
- 回答日時:
コンボボックスを作成してから
COMBOBOXINFO構造体の変数を用意してコンボボックスの子コントロールのリストコントロールのハンドルを取得します
コンボボックスに対してCB_SETHORIZONTALEXTENTを送ってスクロール量を設定して置きます
COMBOBOXINFO info;
ZeroMemory( &info, sizeof( info ) );
info.cbSize = sizeof( info );
if ( ::GetComboBoxIndo( hWndCombo, &info ) ) {
if ( info.hwndList ) {
::ShowScrollBar( info.hwndList, SB_HORZ, TRUE );
}
}
::SendMessage( hWndCombo, CB_SETHORIZONTALEXTENT, 240, 0 );
といった具合でいいのではと思います
hWndComboはコンボボックスのウィンドウハンドルです
早速のご回答ありがとうございます!
GetComboBoxInfo()と、COMBOBOXINFO構造体はどのヘッダに定義されているのでしょうか。
どのヘッダを検索しても出てこないのです。
Developer StudioのVisual C++5.0を使用しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS VB.net コンボボックス 2 2022/06/30 20:37
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- Google Maps Googleマップ 複数端末で同一アカウントを使っているのにパソコンでのみ表示が異なる 1 2022/07/16 21:03
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- その他(動画サービス) VLCメディアプレーヤーについて 1 2022/11/29 14:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
勝手にウィンドウが開いて止ま...
-
「アイテムは収集されました」...
-
[VBA] UserForm を Excel の W...
-
検索の画面がでなくなってしま...
-
ゲームでは結局どっちが良いの?
-
VBA .Value=.Value ?
-
Vba LongPtrについて教えてくだ...
-
EXCEL2016で新しいウィンドウを...
-
「&HFFFF」「&H1A」とは?
-
他のアプリケーションの終了処理
-
MFC ダイアログバー
-
MFC ダイアログ上のID取得につ...
-
実行中のプログラムが自分を隠...
-
java sevlet でウィンドウ表示
-
eclipseからコンソールが消えた
-
OutlookでRSSフィードやメモの...
-
VB2005のイミディエイト ウィン...
-
win32apiにおける終了処理について
-
Msgboxの変数の表示につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
検索の画面がでなくなってしま...
-
勝手にウィンドウが開いて止ま...
-
ゲームでは結局どっちが良いの?
-
Excelの上下を固定したい
-
VBA .Value=.Value ?
-
作成したウインドウのサイズを...
-
Vba LongPtrについて教えてくだ...
-
ExcelのBOOKが消えた!
-
ラジオボタンの初期指定
-
他のアプリケーションの終了処理
-
「&HFFFF」「&H1A」とは?
-
親ウインドウにあるOKボタンを...
-
EnumChildWindowsの使い方(VBA)
-
MFC ダイアログ上のID取得につ...
-
[VBA] UserForm を Excel の W...
-
UWSCで特定のChromeのタブをア...
-
ボタンのハンドルウィンド取得...
-
ExcelVBAでAPIを使って外部ウイ...
おすすめ情報