VCでのCStatic設定文字、フォント、色、OnCtlColorの使用

2015 ワード

  CStatic       ,      CStatic    WM_CTLCOLOR     。        WM_CTLCOLOR     ,                ,    :

“      ,Windows            WM_CTLCOLOR  ,           ”,              。

HBRUSH CAboutDig::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_STATIC)
{
   pDC->SetTextColor(RGB(0,0,255)); //      
   pDC->SetBkMode(TRANSPARENT);      //      
}
}
の3番目のパラメータOnCtlColorには、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);
}
HBRUSH CAFamlyLianxiDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
   
    if(nCtlColor == CTLCOLOR_STATIC)
    {
        switch(pWnd->GetDlgCtrlID())
        {
            case IDC_STATIC1:
            case IDC_STATIC2:
            case IDC_STATIC3:
            case IDC_STATIC4:
            case IDC_STATIC5:
            case IDC_STATIC6:
                {
                   pDC->SetBkMode(TRANSPARENT);
                   pDC->SetTextColor(RGB(0,0, 255));
                   break;
                }
            case IDC_STATIC7:
            case IDC_STATIC8:
                {
                    pDC->SetBkMode(TRANSPARENT);
                   pDC->SetTextColor(RGB(0,69, 214));
                   break;
                }
            default:
                break;
        }
    }
    return hbr;