MFC static text色を変更
3252 ワード
1.リソースビューを開きます.
2.STATICがあるダイアログボックスをダブルクリックして開きます.
3.STATICのID属性を変更し、ここではIDC_とするTEXT1.
4.CMyDialogと仮定するダイアログにクラスを追加する.
5.ダイアログを選択し、プロパティパネルでメッセージをクリックし、WM_を選択CTLCOLOR.
6.ダイアログ対応クラスのCPPに次のコードが追加されます.
HBURUSH DataSummaryDlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINT nCtlColor){BRUSH hbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);//独自のコードreturnhbrを追加する;}
7.上のコードに修正IDCを追加するTEXTテキストの色のコードは以下の通りです.
HBRUSH DataSummaryDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ BRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->GetDlgCtrlID() == IDC_NOTE) { pDC->SetTextColor(RGB(255, 0, 0)); } return hbr;}
フォントの変更にも同様の方法が適用されます.
多くの人は自分のプログラムのインタフェースがそんなに美しくないと思って、往々にしてVCのデフォルトの発生するダイアログボックスは比較的に単調で、そのため多くの人は往々にして多くの他のコントロールを見つけてダイアログボックスを美化して修飾して、例えば静的なコントロールにフォントを設定して、背景の色を設定しますCTLCOLORメッセージで完了!
WM_CTLCOLORメッセージは、EDIT、STATIC、BUTTONなどのコントロールの背景とフォント色の設定を完了するために使用されます.
1.まず、自分がインタフェースを設定する必要があるダイアログボックスで右クリック-->クラスウィザードの作成-->WM_への参加CTLCOLORメッセージ-->OnCtlColor()関数を自動的に生成します.この関数は、このダイアログボックスのコントロールのインタフェースの外観を修飾します.次のように使用します.クラスウィザードで生成された関数を次のように変更します.
注意:caseのカテゴリには、CTLCOLOR_があります.BTNボタンコントロールCTLCOLOR_DLGダイアログCTLCOLOR_EDIT編集ボックスCTLCOLOR_LISTBOXリストボックスCTLCOLOR_MSGBOXメッセージボックスCTLCOLOR_SCROLLBARスクロールバーCTLCOLOR_STATIC静的テキスト2.すべてのコントロールに対して統一的なインタフェース設定を使用するのは自由ではないと思うかもしれませんが、VCも特定のIDのコントロールを設定することができます.方法は以下の通りです.
2.STATICがあるダイアログボックスをダブルクリックして開きます.
3.STATICのID属性を変更し、ここではIDC_とするTEXT1.
4.CMyDialogと仮定するダイアログにクラスを追加する.
5.ダイアログを選択し、プロパティパネルでメッセージをクリックし、WM_を選択CTLCOLOR.
6.ダイアログ対応クラスのCPPに次のコードが追加されます.
HBURUSH DataSummaryDlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINT nCtlColor){BRUSH hbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);//独自のコードreturnhbrを追加する;}
7.上のコードに修正IDCを追加するTEXTテキストの色のコードは以下の通りです.
HBRUSH DataSummaryDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ BRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->GetDlgCtrlID() == IDC_NOTE) { pDC->SetTextColor(RGB(255, 0, 0)); } return hbr;}
フォントの変更にも同様の方法が適用されます.
多くの人は自分のプログラムのインタフェースがそんなに美しくないと思って、往々にしてVCのデフォルトの発生するダイアログボックスは比較的に単調で、そのため多くの人は往々にして多くの他のコントロールを見つけてダイアログボックスを美化して修飾して、例えば静的なコントロールにフォントを設定して、背景の色を設定しますCTLCOLORメッセージで完了!
WM_CTLCOLORメッセージは、EDIT、STATIC、BUTTONなどのコントロールの背景とフォント色の設定を完了するために使用されます.
1.まず、自分がインタフェースを設定する必要があるダイアログボックスで右クリック-->クラスウィザードの作成-->WM_への参加CTLCOLORメッセージ-->OnCtlColor()関数を自動的に生成します.この関数は、このダイアログボックスのコントロールのインタフェースの外観を修飾します.次のように使用します.クラスウィザードで生成された関数を次のように変更します.
HBRUSH CDialogColor::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor);
// TODO: Change any attributes of theDC here
//
CFont * cFont=new CFont;
cFont->CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0,
ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH&FF_SWISS,"Arial");
//
switch()
{
case CTLCOLOR_STATIC: //
{
pDC->SetBkMode(TRANSPARENT);
//
pDC->SetTextColor(RGB(255,255,0)); //
pWnd->SetFont(cFont); //
HBRUSH B = CreateSolidBrush(RGB(125,125,255));
//
return (HBRUSH) B; //
}
case CTLCOLOR_EDIT: //
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,0));
pWnd->SetFont(cFont);
HBRUSH B = CreateSolidBrush(RGB(125,125,255));
return (HBRUSH) B;
}
default:
return CDialog::OnCtlColor(pDC,pWnd, nCtlColor);
}
}
注意:caseのカテゴリには、CTLCOLOR_があります.BTNボタンコントロールCTLCOLOR_DLGダイアログCTLCOLOR_EDIT編集ボックスCTLCOLOR_LISTBOXリストボックスCTLCOLOR_MSGBOXメッセージボックスCTLCOLOR_SCROLLBARスクロールバーCTLCOLOR_STATIC静的テキスト2.すべてのコントロールに対して統一的なインタフェース設定を使用するのは自由ではないと思うかもしれませんが、VCも特定のIDのコントロールを設定することができます.方法は以下の通りです.
switch (pWnd->GetDlgCtrlID())
{
// ID IDC_CTL1、IDC_CTL2 IDC_CTL3
case IDC_CTL1:
case IDC_CTL2:
case IDC_CTL3:
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255, 0));
pWnd->SetFont(cFont);
HBRUSH B = CreateSolidBrush(RGB(125,125,255));
return (HBRUSH) B;
}
default:
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}