- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:行き詰まりましたυ)
CListCtrlクラスのフォント情報の取得方法について
このQ&Aのポイント
- CListCtrlクラスのDrawItem関数内でリストコントロールの一部のフォント情報を取得する方法を探しています。
- 太文字や赤色の情報をリストコントロールの各行の最後のカラムを退避用フィールドとして使用する方法を検討していますが、スマートではありません。
- 他の方法やキーワードを探していますが、困っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 再投稿ですみません。 別にいいけど、これだけじゃ前回の質問がどんな内容だったのかわかりません。 前回の質問のリンクを書いておくとかしましょう。 DrawItemをオーバーライドして、アイテムを自分で描画している場合の話ですよね。 フォント情報が必要なのではなくて、各行がどんなフォント・色で描画されているかが知りたいんじゃないですか? そうであけば、DrawItemの中で ・どんなときに太字で描画しているのか ・どんなときに赤色で描画しているのか が分かれば、DrawItem以外の場所で情報を取得する方法があるでしょう。 どうしてもDrawItem内でないと判断できないのであれば、CListCtrl::SetItemDataでデータを設定すれば、他の処理内でもCListCtrl::GetItemDataでそのデータを取り出せるので、判断できるでしょう。
お礼
できました!!返信が遅くなってすみません。 さらに質問の仕方が分からなくてごめんなさいでした。 【前回の質問】リストコントロール特定行のフォント情報取得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