現在、ダイアログにCListCtrlを貼り付けています。そして、
OnMeasureItemをオーバーライドしています。
OnMeasureItem()でlpMeasureItemStruct->itemHeightに
値を入れると高さは変わります。
ある1行の高さだけを変更したいのですが、どうすればよいのでしょうか?
ご教授よろしくお願いします。
開発環境は、WindowsXP Visual C++ 6.0 MFCです。
ご参考までに。
MEASUREITEMSTRUCTには、コントロールIDとItemIDが入ってくると思うのですが、
これを見て判別できないのでしょうか?
ItemIDからそのデータに該当する情報をチェックして結果によってitemHeightに設定する
値を変えれば出来そうな気がするのですが。
コードの検証までは行っていませんのでご自分で検証してみてください。
ご返事ありがとうございます。
コントロールIDとItemIDを調べたのですが、ItemIDは0でコンボボックスとかのように
何項目というように値が入ってきません。
リストビューでは無理なのでしょうか?
よろしくお願いします。
リストボックスと勘違いしてました。
リストコントロールの場合は、レポート形式外の表示形態もあるので
コンボボックスのように何番目という識別の仕方はしないのでした。
リストコントロールの場合はアイテムハンドルで識別してますね。
HELPの読み直したんですが、
オーナー描画のボタン、コンボ ボックス、リスト ボックス、
またはメニュー項目のコントロールが作成された場合に、
そのコントロールのオーナーに対して、フレームワークから
このメンバ関数が呼び出されます。
リスト ボックスやコンボ ボックスが LBS_OWNERDRAWVARIABLE
または CBS_OWNERDRAWVARIABLE スタイルで作成されているときは、
コントロールの各項目のオーナーに対して、
フレームワークからこの関数が呼び出されます。
それ以外のときは、この関数は一度だけ呼び出されます。
とありますのでリストコントロールのときは一回だけしか呼び出されて
いないのではないですか?
もしそうなら、このアプローチでは無理だと思います。
複数回呼び出されているのであれば、構造体内のほかのメンバーで
どの項目に対して呼び出しているかを判断できないかデバッガで
確認してみてはどうでしょう。