コンボボックスで一行ごとにフォントを変えるには – プログラミング – Home

コンボボックスで一行ごとにフォントを変...
 
通知
すべてクリア

[解決済] コンボボックスで一行ごとにフォントを変えるには


Qoo-nita
 Qoo-nita
(@Qoo-nita)
ゲスト
結合: 24年前
投稿: 4
Topic starter  

コンボボックス内の項目ごとにフォントを変えて
表示するにはどのようにすればよいのでしょうか。
(MS-WORD2000にあるようなフォント選択コンボボックス
を作りたいのです)
TrueTypeフォント名を列挙するまでは出来たのですが、
SetFontを使うと全て変わってしまいます。
宜しくお願いします。


引用未解決
トピックタグ
Qoo-nita
 Qoo-nita
(@Qoo-nita)
ゲスト
結合: 24年前
投稿: 4
Topic starter  

書き忘れましたが、開発環境はVC++6.0です。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

これは、オーナードローで実現するしかないのではないでしょうか。


返信引用
Qoo-nita
 Qoo-nita
(@Qoo-nita)
ゲスト
結合: 24年前
投稿: 4
Topic starter  

オーナードローとは何の事でしょうか。
初歩的な質問ですみません。出来れば
具体的なコードなどを教えていただければ
嬉しいです。宜しくお願いします。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

オーナードロー:Owner Draw...自分で描く。
コントロールの見てくれを、自分で描くテクニックです。
人によっては、「オーナー描画」「カスタムドロー」と呼ぶ場合もあります。

とりあえず、Qoo-nitaさんの要件では、行ごとに書体の違うコンボボックスという事ですよね。
ダイアログエディタに貼り付けたコンボボックスのプロパティに「オーナー描画」という
項目が確認できますか?
これを「固定」か「可変」にして下さい(意味はヘルプを参照してくださいね)。
これで、コンボボックスにCBS_OWNERDRAW***というスタイルを追加した事になります。

そうすると、親ウィンドウにはWM_DRAWITEMというメッセージが送られるようになります。
メッセージのlParamに、DRAWITEMSTRUCT構造体が渡されてきますので、
この構造体の情報を手がかりに、コントロールの見てくれを描画してやります。

基本的な流れは、以上です。
まずは、調べながらトライしてみてください。
で、行き詰まったら、また質問を上げてください。

尚、具体的なコードをとありますが、多岐にわたり、書ききる事ができません。
ご了承くださいませ。


返信引用
Qoo-nita
 Qoo-nita
(@Qoo-nita)
ゲスト
結合: 24年前
投稿: 4
Topic starter  

DRAWITEMSTRUCTからデバイスコンテキストを取得
SelectObjectでフォントを設定し
TextOutで描画するという形で解決しました。

オーナードローなんて初めてやったので
かなり勉強になりました。
どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました