プロが教えるわが家の防犯対策術!

WinXP,SDKです。よろしくお願いします。

コンボボックスに色を何色か表示したいです。
いつもはオーナー描画にはしないのですが
色を付ける為にオーナー描画とすると
どうしてもコンボボックスの高さがオーナー描画ではない時に比べて長くなります。(コンボボックスはドロップダウンリストです)

コンボボックスに小さいフォントを与えても変化しませんでした。
MoveWindowしてもダメでした。
CB_SETITEMHEIGHTをすると、リスト部分の各項目の高さが変わりました。

コンボボックスが閉じられた状態の高さを変えるにはどうしたら良いのでしょうか。
もしくは、オーナー描画にしなくてもコンボボックスの各項目に色を付ける事が出来るのでしょうか。

画面の中でこのコンボボックスだけが異様に大きくておかしいです。
画面のフォントサイズは変えられません(大きなコンボボックスに合わせて画面全体大きくして…というのはNG)

アドバイスをよろしくお願い致します。

A 回答 (1件)

 こんばんは。


 
>>コンボボックスが閉じられた状態の高さを変えるにはどうしたら良いのでしょうか。
 オーナードローの場合はWM_MEASUREITEMメッセージを処理します。

LPMEASUREITEMSTRUCT lpMis = reinterpret_cast<LPMEASUREITEMSTRUCT>(lp);
switch(uMsg)
{
case WM_MEASUREITEM:
if(lpMis->CtlType == ODT_COMBOBOX)
{
if(lpMis->CtlID == IDC_COMBO1)
{
lpMis->itemWidth = /*縦幅*/;
lpMis->itemHeight= /*横幅*/;
}
}
}

>>もしくは、オーナー描画にしなくてもコンボボックスの各項目に色を付ける事が出来るのでしょうか。
 此れは多分出来ないと思います。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます!
今まで何年もSDKでプログラムを組んできましたが、このような事が出来るとは知りませんでした。
昨日一日中サイズを変える事が出来るかどうかネットで調べていたのですが、まったくこのような処理には出会えませんでした。
あまりにも思い通りに表示が変わったので感激です。
本当に助かりました。ありがとうございます。

お礼日時:2008/11/07 09:37

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