アプリ版:「スタンプのみでお礼する」機能のリリースについて

WinXP,SDKで開発しています。
今、最大サイズ画面の右側にあるコンボボックスのリスト部分が表示仕切れなくて困っています。

実際のコンボボックスは小さく、リスト表示の時に大きくしています。

SendDlgItemMessage(hwnd, IDC_COMBO1, CB_SETDROPPEDWIDTH, 240, 0L);

このサイズで丁度リストの中身が見えるのですが、リストが画面からはみ出しています。
そこで、リストのサイズを200くらいにして(200で画面に収まります)水平スクロールを表示したいのですがうまく行きません。

ShowScrollBar()

で表示出来るかと思ったのですが、渡すウィンドウハンドルが分からないのです。
おそらくリストのウィンドウハンドルだと思うのですが…
このリストのウィンドウハンドルを取得する方法がよく分からないのです。

GetComboBoxInfo()

という関数があるようなのですが、コンパイルエラーになってしまって先にすすみません。(定義されていない識別子)

そもそも考え方を間違えているのでしょうか。
もっと簡単な方法がありますか?
アドバイスをお願い致します。

A 回答 (4件)

★次の1行で良いと思います。



SendMessage( hWndCombo, CB_SETHORIZONTALEXTENT, ピクセル幅, 0 );

※コンボボックスのスタイルに水平スクロールバーを持つスタイルを設定します。
※このスタイルがないと CB_SETHORIZONTALEXTENT メッセージは無効になります。
※WS_HSCROLLスタイルを参照のこと。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

CB_SETHORIZONTALEXTENTはやってみたのですが、水平スクロールが出てこなかったので諦めていました。
WS_HSCROLLスタイルも、リソースエディタを使ってコンボボックスを生成していたため発見出来ませんでした。(リソースエディタには無いのでしょうか?)
WS_HSCROLLスタイルを追加するのに苦労しましたが、結果きちんと水平スクロールが表示されました。

アドバイス、ありがとうございました。助かりました。

お礼日時:2008/01/31 09:40

ダウンロードセンターなどでPlatformSDKをダウンしてみてはいかがでしょう


http://www.microsoft.com/msdownload/platformsdk/ …
上記からアクセスしてみてください
WebInstall遷移すると思います

ISOイメージやCAB形式のリンクも遷移後のページの下部のほうにあります
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
早速ダウンロードしてテスト環境を整えて水平スクロールが表示される事が確認出来ました。
ありがとうございます。

複数人で開発を行っているために自分だけ環境を変えての開発が難しいので、今回Oh-Orangeさまの手法を取らせて頂いたのですが、今後開発環境を変えていった場合に利用出来る事が分かり、大変助かりました。
何度もアドバイス頂き感謝しております。

ありがとうございました。

お礼日時:2008/01/31 09:44

WinUser.hに有るようですよ



当方のVC6.0では WinUser.hの10000行あたりに記述があります
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

ということは、VC5.0では使えないという事なのですね…
WinUser.hはインクルードしているのですが駄目なのです。
中身を見てみましたが、やはり定義されていないようでした。

お礼日時:2008/01/30 17:47

コンボボックスを作成してから


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はコンボボックスのウィンドウハンドルです
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます!

GetComboBoxInfo()と、COMBOBOXINFO構造体はどのヘッダに定義されているのでしょうか。
どのヘッダを検索しても出てこないのです。
Developer StudioのVisual C++5.0を使用しております。

お礼日時:2008/01/30 17:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!