リストボックスの各項目のテキスト表示を上下左右中央表示にしたい

[戻る]
えふ 2003/02/06(木) 14:15:01
VC++6.0 SP5 MFCにて開発しております。
リストボックスの各項目の高さをSetItemHeight()にて表示テキストのフォントサイズより大き
くした場合、そのテキストは項目の上部に表示されてしまいますが、これを上下中央配置にする
ことは可能でしょうか?
可能であれば、その方法をご教授願えればと思います。
また更に、左右中央配置にすることも可能であれば、併せてご教授願います。

渋木宏明(ひどり) [E-Mail] [HomePage] 2003/02/06(木) 15:49:29
「リストボックス」「項目」「オーナードロー」をキーワードにして、google などで検
索してみてください。

ku 2003/02/06(木) 15:50:25
既にオーナー描画をしているなら
DRAWITEMSTRUCTのrcItemが1項目のサイズだったと思うのでそれと
描画するテキストのサイズをGetTextExtentで取得して
描画位置を調整すれば良いと思います

えふ 2003/02/06(木) 18:23:33
[[解決]]
ご助言ありがとうございます。
「オーナードロー」がキーワードだったのですね。
CListBoxクラスの派生クラスを生成して、オーバーライドさせる DrawItem() 内で

DrawText(str, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE)

とすることで、所望する動作を実現することができました。

古いスレッドには追加発言できません。