- ベストアンサー
VC++でリストコントロールの特定の行だけを太文字にする方法
- 質問者は、VC++でリストコントロールの特定の行だけを太文字にする方法を知りたいです。
- 質問者は、リストコントロール(IDC_LIST)に割り当てられた変数m_xcListの特定の行だけを太文字にする方法を知りたいです。
- 質問者は、既にできているエクセル版のリストコントロールでは、HTML形式で書き出し、太文字のアイテムを一つのフォルダに抽出する仕様であり、リストコントロールの特定の行だけを太文字にする方法を知りたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- m-take0220
- ベストアンサー率60% (474/778)
- m-take0220
- ベストアンサー率60% (474/778)
- m-take0220
- ベストアンサー率60% (474/778)
関連するQ&A
- VC++でツリーコントロールの文字色変更
VC++.NETを使い始めたばかりの初心者です。 ツリーコントロールで登録した文字列を 行ごとに文字色の変更をしたいのですが やり方がわからなく困っています。 WM_NOTIFYメッセージを横取りして clrTextメンバに色を設定をしてみたのですが、 アイテムのダブルクリックやマウス右クリック メニューが使えなくなってしまいました。 ほかのやり方でもかまいませんので ご存知の方は、ご教授をよろしくお願いします。
- ベストアンサー
- C・C++・C#
- リストコントロール特定行のフォント情報取得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です。 どうすればいいか、教えてくださると うれしいです。
- 締切済み
- C・C++・C#
- VC++2010 ボタンなどのレイアウト大きさ変更
VC++2010のMFCで現在開発しているんですが、 ボタン、スタティックテキスト、エディットボックスの文字の大きさを変更したいんですが どのようにすればいいかわかりません。よろしくお願いします。 またステータスバーに色を付けたいんですがどのようにすれば色を付けることができますか? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- VC# コンボボックスの大文字・小文字を区別する
VC# 2005で、以下のようなコードを書くと、大文字・小文字の区別がなく、 1行目で追加したアイテムが選択された状態になってしまいます。 comboBox1.Items.Add("a"); comboBox1.Text = "A"; 大文字・小文字を別として扱うことはできますでしょうか?
- ベストアンサー
- C・C++・C#
- MFC コンボボックスを複数扱う
環境:VC++2008 MFC 同じリストの内容を持つコンボボックスを16個作りたい。(IDC_COMBO1~16) 16個のDDX変数を用意し、16回値を格納するのは綺麗じゃないので1個のDDX変数でなんとかしたいです。 ソースは以下の物で練習しています。 http://www.g-ishihara.com/mfc_cb_01.htm どのようにすれば簡潔にかけるでしょうか?
- 締切済み
- C・C++・C#
- VC++のコンボボックスの各項目の背景色と文字色を変える方法
こんにちは。 VC++6.0でMFCアプリを作成しています。 コンボボックスの項目を選択するときに、ドロップダウン表示された 各項目の背景色と文字色を変えたいのですがどのようにすれば できるのでしょうか? よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- テキストボックスへの文字の表示について(文字は可変である)
リストボックスと関連付けさせて、テキストボックスに文字を表示させたいです。 表示のさせ方としては、例えば、リストボックスに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から始まるインデックスとは、どういうことを意味しているのでしょうか。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 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でした。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
お礼
ありがとうございます!! 一から付き合っていただいて…、思ってた通りの動作が確認できました! 以下、最終的なコードです =================================================================================== void CMylistCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct){ //▼ http://dejibouzu.com/page/2/ ベースとなるコード ▼ CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); CRect rect; rect = ( CRect)lpDrawItemStruct->rcItem; int nItem = lpDrawItemStruct->itemID; TCHAR szBuff[MAX_PATH]; CRect nRect; int nCnt = 0; int nIndentPix; CHeaderCtrl *Head = GetHeaderCtrl(); int nMax = Head->GetItemCount(); while( nMax > nCnt ) { nIndentPix = 0; //アイテム取得のための設定 LVITEM lvItem; lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE | LVIF_INDENT ;//追加しても意味がなかった2011.05.14 | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES; lvItem.iItem = nItem; lvItem.iSubItem = nCnt; lvItem.pszText = szBuff; lvItem.cchTextMax = sizeof(szBuff); lvItem.stateMask = LVIS_SELECTED;//-1を LVIS_SELECTEDに変更2011.05.14 //m_xcList.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); if( GetItem(&lvItem) == TRUE ){ if( nCnt == 0){ //アイテムの場合 GetItemRect( nItem, &nRect, LVIR_BOUNDS); }else{ //サブアイテムの場合 GetSubItemRect( nItem, nCnt, LVIR_BOUNDS, nRect); } //if ( m_phbrBkColor ){ //カラーテーブルにブラシが作成されているなら背景を描画 //if ( m_phbrBkColor[ nCnt * GetItemCount() + nItem] ) //{ //アイテムの場合 描画箇所をアイテム部分のみに修正 if( nCnt == 0 ){ nRect.right = GetColumnWidth( 0 ); } //FillRect( pDC->m_hDC, &nRect, m_phbrBkColor[ nCnt * GetItemCount() + nItem ] ); //} //} //http://www.crimson-systems.com/tips/t003.htm //http://oshiete.goo.ne.jp/qa/6645218.html //http://www.tcn.zaq.ne.jp/zxcvbnm/projectc/vcpp/colortextcombo.htm //=======================▼教えて頂いた部分+α▼======================= CFont fontBold, *pfontOld; LOGFONT lf; pDC->GetCurrentFont()->GetLogFont(&lf); // 描画動作が全体の再描画もしくは、 // 選択状態が変化した場合 if( lpDrawItemStruct->itemAction & ( ODA_DRAWENTIRE | ODA_SELECT )) { // コントロールの状態が選択された状態の場合 if( lpDrawItemStruct->itemState & ODS_SELECTED ){ // 選択されている場合の描画 lf.lfWeight = FW_BOLD; //【×】pDC->FillSolidRect(&lpDrawItemStruct->rcItem,RGB(0,0,255));/*文字の後ろの色(背景と一緒にしとくべき)*/ //【×】pDC->SetBkMode(TRANSPARENT); pDC->SetBkMode(OPAQUE);//【○】これがないと背景が描画されない。 pDC->SetBkColor(RGB(0,0,255));/*背景の色*/ pDC->SetTextColor(RGB(255,255,255));/*文字の色*/ }else{//←条件追加 lf.lfWeight = FW_NORMAL; //【×】pDC->FillSolidRect(&lpDrawItemStruct->rcItem,RGB(255,255,255));/*文字の後ろの色(背景と一緒にしとくべき)*/ //【×】pDC->SetBkMode(TRANSPARENT); pDC->SetBkMode(OPAQUE);//【○】これがないと背景が描画されない。 pDC->SetBkColor(RGB(255,255,255));/*背景の色*/ pDC->SetTextColor(RGB(0,0,0));/*文字の色*/ } } else{ // 選択されていない場合の描画 lf.lfWeight = FW_NORMAL; pDC->SetBkMode(OPAQUE);//【○】 pDC->SetBkColor(RGB(255,255,255));/*背景の色*/ pDC->SetTextColor(RGB(0,0,0));/*文字の色*/ } fontBold.CreateFontIndirect(&lf); pfontOld = (CFont*)pDC->SelectObject(&fontBold); //pDC->SelectObject(pfontOld); //=======================▲教えて頂いた部分+α▲======================= //テキスト描画 CString outText = lvItem.pszText; //pDC->TextOut( nRect.left + 10, nRect.top + 2, outText ); nRect.left += 10;//変更2011.05.14 nRect.top +=2;//変更2011.05.14 pDC->DrawText(outText, &nRect, DT_VCENTER | DT_LEFT ); UpdateData(FALSE); } ++nCnt; } //▲ http://dejibouzu.com/page/2/ ▲ // //pDC->DrawText(CListCtrl::GetItemText(workRow,workColumn),/*lpDrawItemStruct->itemData*//*CListCl::GetSubItemRect&lpDrawItemStruct->rcItem*/,/&lpDrawItemStruct->rcItem,DT_LEFT | DT_VCENTER | DT_SINGLELINE); // //MessageBox(CListCtrl::GetItemText(lpDrawItemStruct->itemID-1,workColumn)); // } //} //http://msdn.microsoft.com/ja-jp/library/Cc428474 //int DrawText( // HDC hDC, // デバイスコンテキストのハンドル // LPCTSTR lpString, // 描画するテキスト // int nCount, // テキストの長さ // LPRECT lpRect, // テキストを描画する長方形領域 // UINT uFormat // テキスト描画オプション //); }