对话框中如何设定静态文本和编辑框的字体和背景颜色?

解决方案 »

  1.   

    BOOL CDlgGrant::OnInitDialog() 
    {
    CDialog::OnInitDialog();
    m_Brush=CreateSolidBrush(RGB(30,180,180));
    /............................
    void CDlgGrant::OnButtonShow() 
    {
    m_ListCtrl.DeleteAllItems();
    m_ListCtrl.SetTextColor(RGB(100,0,100));
    m_ListCtrl.SetTextBkColor(RGB(240,247,233));
    gb_set.Open();
    int i=0;***********希望对楼主有些启示
      

  2.   

    CFont m_Font; m_Font.CreateFont( 16, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_SWISS, "Arial"); CEdit *m_Edit=(CEdit *)GetDlgItem(IDC_EDIT1); m_Edit->SetFont(&m_Font);
    HBRUSH CTest6Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); switch(nCtlColor) { case CTLCOLOR_EDIT: if(pWnd->GetDlgCtrlID() == IDC_EDIT1) { static HBRUSH hbrEdit = ::CreateSolidBrush( RGB(255, 0, 0) ); pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor( RGB(0, 255, 0) ); return hbrEdit; }
    } // TODO: Return a different brush if the default is not desired return hbr;}
      

  3.   

    响应WM_CTLCOLOR 返回一个HBRUSH 可以改背景色http://blog.vckbase.com/star/archive/2005/03/15/3589.aspx
      

  4.   

    使用现成的类:
    //头文件
    /*===========================================================================
    ====                                                                     ====
    ====    File name           :  StaticTrans.h                             ====
    ====    Creation date       :  7/10/2001                                 ====
    ====    Author(s)           :  Dany Cantin                               ====
    ====                                                                     ====
    ===========================================================================*/#ifndef STATICTRANS_H
    #define STATICTRANS_H#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    /////////////////////////////////////////////////////////////////////////////
    // CStaticTrans window#define TRANS_BACK -1class CStaticTrans : public CStatic
    {
        // Construction
    public:
        CStaticTrans();
        
    private:
        COLORREF m_TextColor;
        COLORREF m_BackColor;
        CBrush   m_Brush;
        
    // Operations
    public:
        void SetTextColor(COLORREF col) { m_TextColor = col;
                                          UpdateCtrl();      }
        void SetBackColor(COLORREF col) { m_BackColor = col;
                                          UpdateCtrl();      }private:
        void UpdateCtrl();
        
    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CStaticTrans)
    //}}AFX_VIRTUAL// Implementation
    public:
    virtual ~CStaticTrans();// Generated message map functions
    protected:
    //{{AFX_MSG(CStaticTrans)
    afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
    //}}AFX_MSGDECLARE_MESSAGE_MAP()
    };
    #endif // STATICTRANS_H
      

  5.   

    /*===========================================================================
    ====                                                                     ====
    ====    File name           :  StaticTrans.cpp                           ====
    ====    Creation date       :  7/10/2001                                 ====
    ====    Author(s)           :  Dany Cantin                               ====
    ====                                                                     ====
    ===========================================================================*/#include "stdafx.h"
    #include "StaticTrans.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/////////////////////////////////////////////////////////////////////////////
    // CStaticTransCStaticTrans::CStaticTrans()
    {
        m_TextColor = RGB(0, 0, 0);
        m_BackColor = TRANS_BACK;    
    }CStaticTrans::~CStaticTrans()
    {
    }
    BEGIN_MESSAGE_MAP(CStaticTrans, CStatic)
    //{{AFX_MSG_MAP(CStaticTrans)
    ON_WM_CTLCOLOR_REFLECT()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
    // CStaticTrans message handlersHBRUSH CStaticTrans::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
        m_Brush.DeleteObject();
        
        if (m_BackColor == TRANS_BACK) {
            m_Brush.CreateStockObject(HOLLOW_BRUSH);
            pDC->SetBkMode(TRANSPARENT);
        }
        else {
            m_Brush.CreateSolidBrush(m_BackColor);
            pDC->SetBkColor(m_BackColor);
        }
        
        pDC->SetTextColor(m_TextColor);
        
        return (HBRUSH)m_Brush;
    }void CStaticTrans::UpdateCtrl()
    {
        CWnd* pParent = GetParent();
        CRect rect;
        
        GetWindowRect(rect);
        pParent->ScreenToClient(rect);
        rect.DeflateRect(2, 2);
        
        pParent->InvalidateRect(rect, FALSE);    
    }