コンボボックス内の項目ごとにフォントを変えて
表示するにはどのようにすればよいのでしょうか。
(MS-WORD2000にあるようなフォント選択コンボボックス
を作りたいのです)
TrueTypeフォント名を列挙するまでは出来たのですが、
SetFontを使うと全て変わってしまいます。
宜しくお願いします。
書き忘れましたが、開発環境はVC++6.0です。
これは、オーナードローで実現するしかないのではないでしょうか。
オーナードローとは何の事でしょうか。
初歩的な質問ですみません。出来れば
具体的なコードなどを教えていただければ
嬉しいです。宜しくお願いします。
オーナードロー:Owner Draw...自分で描く。
コントロールの見てくれを、自分で描くテクニックです。
人によっては、「オーナー描画」「カスタムドロー」と呼ぶ場合もあります。
とりあえず、Qoo-nitaさんの要件では、行ごとに書体の違うコンボボックスという事ですよね。
ダイアログエディタに貼り付けたコンボボックスのプロパティに「オーナー描画」という
項目が確認できますか?
これを「固定」か「可変」にして下さい(意味はヘルプを参照してくださいね)。
これで、コンボボックスにCBS_OWNERDRAW***というスタイルを追加した事になります。
そうすると、親ウィンドウにはWM_DRAWITEMというメッセージが送られるようになります。
メッセージのlParamに、DRAWITEMSTRUCT構造体が渡されてきますので、
この構造体の情報を手がかりに、コントロールの見てくれを描画してやります。
基本的な流れは、以上です。
まずは、調べながらトライしてみてください。
で、行き詰まったら、また質問を上げてください。
尚、具体的なコードをとありますが、多岐にわたり、書ききる事ができません。
ご了承くださいませ。
DRAWITEMSTRUCTからデバイスコンテキストを取得
SelectObjectでフォントを設定し
TextOutで描画するという形で解決しました。
オーナードローなんて初めてやったので
かなり勉強になりました。
どうもありがとうございました。