• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:行き詰まりましたυ)

CListCtrlクラスのフォント情報の取得方法について

このQ&Aのポイント
  • CListCtrlクラスのDrawItem関数内でリストコントロールの一部のフォント情報を取得する方法を探しています。
  • 太文字や赤色の情報をリストコントロールの各行の最後のカラムを退避用フィールドとして使用する方法を検討していますが、スマートではありません。
  • 他の方法やキーワードを探していますが、困っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 再投稿ですみません。 別にいいけど、これだけじゃ前回の質問がどんな内容だったのかわかりません。 前回の質問のリンクを書いておくとかしましょう。 DrawItemをオーバーライドして、アイテムを自分で描画している場合の話ですよね。 フォント情報が必要なのではなくて、各行がどんなフォント・色で描画されているかが知りたいんじゃないですか? そうであけば、DrawItemの中で ・どんなときに太字で描画しているのか ・どんなときに赤色で描画しているのか が分かれば、DrawItem以外の場所で情報を取得する方法があるでしょう。 どうしてもDrawItem内でないと判断できないのであれば、CListCtrl::SetItemDataでデータを設定すれば、他の処理内でもCListCtrl::GetItemDataでそのデータを取り出せるので、判断できるでしょう。

psychang
質問者

お礼

できました!!返信が遅くなってすみません。 さらに質問の仕方が分からなくてごめんなさいでした。 【前回の質問】リストコントロール特定行のフォント情報取得VC++ http://oshiete.goo.ne.jp/qa/6747822.html 【解決済みの質問】リストコンロールの一行だけを太文字に(VC++) http://oshiete.goo.ne.jp/qa/6734007.html ■今回、お教え頂いた部分 //CListCtrl::SetItemData(MSDN)↓ //http://msdn.microsoft.com/ja-jp/library/936147y4(v=VS.100).aspx  if( GetItem(&lvItem) == TRUE ){   if( nCnt == 0){ //アイテムの場合    SetItemData(nItem, lf.lfWeight);   }  } これだけで済むとは…、短すぎてソースを載せるのが恥ずかしくなります。 SetItemDataの第二引数は数値ですから、太文字と赤文字を判定するのも、自分で  1:通常のフォント  2:太い文字  3:赤い文字  4:太くて赤い文字 とでも、意味づけし、GetItemDataでも、それぞれに処理を分けてやればいいのですね。 定数を足すというのもありかもしれませんね(!?)  if( GetItem(&lvItem) == TRUE ){   if( nCnt == 0){ //アイテムの場合    SetItemData(nItem, lf.lfWeight + pDC->GetTextColor());   }  } テストボタン内で、試しに、 if(m_xcList.GetItemData(○行目)== (FW_BOLD + RGB(255,255,255))){ MessageBox(_T("白い太文字です")); } としても出来ました。  【参考元】http://dejibouzu.com/page/2/   相変わらず、参考にした大元のソース(↑)です。 じきに締め切らせていただきます。 本当にありがとうございましたm(_ _)m

関連するQ&A