• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リストコンロールの一行だけを太文字に(VC++))

VC++でリストコントロールの特定の行だけを太文字にする方法

m-take0220の回答

回答No.2

コントロールの特定の項目に対してSetFontすることは、少なくともリストコントロールではできません。 > void CFileListCreatorDlg::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct){ MeasureItemを使うのはCListBoxの場合なので、必要ありません。 それに、処理を追加するのはCListCtrlの派生クラスに対してなので、ダイアログのクラスに記述しても呼ばれることはありませんよ。 > void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct){ 前述のとおり、CListCtrlの派生クラスのメンバ関数にする必要があります。 > if(CFileListCreatorDlg::lvi.itemData == -1 || CFileListCreatorDlg::lvi.itemData == NULL) サイトの記述間違いです。正しくはlpDrawItemStruct->itemDataになります。 CListCtrlの派生クスについては、下記サイトを参照してみてください。 http://d.hatena.ne.jp/nurs/20091126

psychang
質問者

補足

>コントロールの特定の項目に対してSetFontすることは、少なくともリストコントロールではできません。 横一行、すべてBoldにはできますか?(繰り返しになってすみません。) Columnまで個別にBoldできなくてもいいです。 教えて頂いたホームページで、慎重に進めました。 OwnerDrawFixed をTrueにすると、リストが真っ白になってしまいます。 ファイルに保存したら、ちゃんとデータが入っています。 分からないので、試験的に■■■に「_T("1111111")」をいれて、ソート機能を実行すると、 「重複NO」に一番左の項目にちゃんと太文字で、表示されました。他の欄は空欄です。 つまり、DrawText()の一番最初の引数に何を入れればいいのか分かりません。 何行目を太文字に、どこで指定しているのかも分かりません。 ========================================================= CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); CFont fontBold, *pfontOld; LOGFONT lf; pDC->GetCurrentFont()->GetLogFont(&lf); lf.lfWeight = FW_BOLD; fontBold.CreateFontIndirect(&lf); pfontOld = (CFont*)pDC->SelectObject(&fontBold); pDC->DrawText(■■■/*lpDrawItemStruct->itemData*/,&lpDrawItemStruct->rcItem,DT_LEFT | DT_VCENTER | DT_SINGLELINE); pDC->SelectObject(pfontOld); ========================================================= ■■■に「lpDrawItemStruct->itemData」を入れてもエラーになります。 LVCOLUMN lvc;//追加2011.05.13 LVITEM lvi;//追加2011.05.13 とpublicで宣言して、■■■に 「&lvc」と入れてもダメです。 ========================================================= わざわざ、ホームページを教えて頂いたのにすみません。m(_ _)m 参考になりそうな(?)ページです。↓ http://oshiete.goo.ne.jp/qa/4165655.html http://bingobingobingo.blog49.fc2.com/category4-1.html

関連するQ&A

  • VC + + 2013

    VC++2013でメニューバーを2行にして、 その上にボタンやリストボックスなどのコントロールを置きたいのですが、方法はありますでしょうか?

  • VC++でツリーコントロールの文字色変更

    VC++.NETを使い始めたばかりの初心者です。 ツリーコントロールで登録した文字列を 行ごとに文字色の変更をしたいのですが やり方がわからなく困っています。 WM_NOTIFYメッセージを横取りして clrTextメンバに色を設定をしてみたのですが、 アイテムのダブルクリックやマウス右クリック メニューが使えなくなってしまいました。 ほかのやり方でもかまいませんので ご存知の方は、ご教授をよろしくお願いします。

  • リストコントロール特定行のフォント情報取得VC++

    この前の http://okwave.jp/qa/q6734007.html の続きです。 (ちょっとだけ↑の訂正します。 XPにEXEを持っていった所、低スペックが関係しているのか、 色の反転の部分が不安定でした。僕が追加したほうの条件を残し、その直後のElse の条件内は削除してください。) それはおいておいて、(本題)度々、質問すみません。 リストコントール特定行のフォント情報取得の方法が分かりません。 http://www.g-ishihara.com/mfc_dc_02.htm の部分の this の代わりに入れるものが分かりません。 CClientDC cdc(this); のところです。 ClientDC cdc(CFileListCreatorDlg::m_xcList.GetItem(workRow)); とでもしたいのですが。。。 フォント情報を取得したいタイミングは、リストを書き出すときです。行単位しか指定できなくてもかまいません。 GetCurrentFont()で取得できるとは、思いますが、オブジェクト名をどうやって指定するのかが分かりません。 MSDN http://msdn.microsoft.com/ja-jp/library/zdff988k.aspx も見ましたが、良く分かりませんでした。何か調べ方にコツがあるのでしょうか。。。。 リストの変数名はm_xcListです。 どうすればいいか、教えてくださると うれしいです。

  • VC++2010 ボタンなどのレイアウト大きさ変更

    VC++2010のMFCで現在開発しているんですが、 ボタン、スタティックテキスト、エディットボックスの文字の大きさを変更したいんですが どのようにすればいいかわかりません。よろしくお願いします。 またステータスバーに色を付けたいんですがどのようにすれば色を付けることができますか? よろしくお願いします。

  • VC# コンボボックスの大文字・小文字を区別する

    VC# 2005で、以下のようなコードを書くと、大文字・小文字の区別がなく、 1行目で追加したアイテムが選択された状態になってしまいます。 comboBox1.Items.Add("a"); comboBox1.Text = "A"; 大文字・小文字を別として扱うことはできますでしょうか?

  • MFC コンボボックスを複数扱う

    環境:VC++2008 MFC 同じリストの内容を持つコンボボックスを16個作りたい。(IDC_COMBO1~16) 16個のDDX変数を用意し、16回値を格納するのは綺麗じゃないので1個のDDX変数でなんとかしたいです。 ソースは以下の物で練習しています。 http://www.g-ishihara.com/mfc_cb_01.htm どのようにすれば簡潔にかけるでしょうか?

  • VC++のコンボボックスの各項目の背景色と文字色を変える方法

    こんにちは。 VC++6.0でMFCアプリを作成しています。 コンボボックスの項目を選択するときに、ドロップダウン表示された 各項目の背景色と文字色を変えたいのですがどのようにすれば できるのでしょうか? よろしくお願いいたします。

  • テキストボックスへの文字の表示について(文字は可変である)

    リストボックスと関連付けさせて、テキストボックスに文字を表示させたいです。 表示のさせ方としては、例えば、リストボックスに5つ(5行)の文字列があります。 実現させたい事は、常にそのページが開いた時はリストボックスの1行目をテキストボックスに表示させたいです。簡単な具体例をあげると、 リストボックスに 1行目に「あ」、 2行目に「い」、 3行目に「う」、 4行目に「え」、 5行目に「お」 とあれば、 テキストボックスに、「あ」と表示。 2行目を選択したら「い」と表示。など・・・。 しかし、リストボックスの文字列の順番は場合により並びが同じではないので、スクリプト言語(VBScript?)を用いないといけないとは思いますが・・・ この例をいうと、ページが開いた時、 1行目に「お」、 2行目に「え」、 3行目に「う」、 4行目に「い」、 5行目に「あ」 とあれば、 テキストボックスに、「お」と表示してほしい。 この説明でご理解いただければ幸いです。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • MFCのリストボックスについて

    MFCをVC6.0で作成しています。現在、ダイアログボックスを作成しているのですが、ダイアログボックスの中のリストボックスについて、教えてください。 void CFileReadeDlg::GetIndex() { UpdateData(TRUE); m_nCount = m_xcList.GetCurSel(); if(m_nCount==LB_ERR) { AfxMessageBox("選択してください"); } } の関数で、リストボックス内に存在するカーソルの位置を割り出したいのですが、 この関数は、 void CFileReadeDlg::OnSelchangeDatatable() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください GetIndex(); } のようにリストボックスの中のセルを変更した際に稼動する関数内で呼び出しています。 ですが、実際、このm_nCountには、0しか入りません。 これは、単にOnSelchangeDatatable()の関数を何処かの関数内にも呼び出していないからでしょうか。 そもそも、呼び出す必要はないかと思っていたのですが。 又、VCのヘルプに『単一選択リスト ボックスで、現在選択されている項目があれば、その項目の 0 から始まるインデックスを取得します』 とありましたが、0から始まるインデックスとは、どういうことを意味しているのでしょうか。 よろしくお願いします。

  • VC++ V6.0 MFC Win98環境にて

    VC++ V6.0 MFC Win98環境にて VC++ V6.0 MFC Win98環境にて リストボックスにファイルリストを作ろうとしています。 リストボックスに m_file を割り当て、以下のようにしました。 m_file.ResetContent(); m_file.Dir( DDL_READWRITE | DDL_READONLY, "C:\\*.*" ); m_file.SetCurSel( 0 ); これでリストさせると8.3ファイル名表示となってしまいます。 どうしたらWin98環境でロングファイル名で表示させることができますか? FindFile で自分探し AddString するとか・・・!? ちなみにWin2000ではOKでした。 よろしくお願いします。