MFC控件变色

1.设置控件

    typedef    enum
    {
        E_CLIENT_STATIC_iniTxt =1,//ini配置信息
        E_CLIENT_STATIC_BeginTime//开始运行时间
    }E_Client_Static_Index;

    volatile    BOOL      m_b_Static_iniTxt;//ini配置信息FALSE表示正常显示,TRUE时显示红色
    volatile    BOOL      m_b_Static_BeginTime;//开始运行时间

    CStatic      m_Static_iniTxt;//ini配置信息
    CStatic      m_Static_BeginTime;//开始运行时间

 

 

    HBRUSH OnCtlColor(   CDC* pDC,CWnd* pWnd,UINT nCtlColor );

2.消息映射
    ON_WM_CTLCOLOR()

3.创建控件

    //第一排
    m_Static_iniTxt.Create(_T(""), WS_CHILD|WS_VISIBLE|SS_LEFT |WS_BORDER,rec,this);
    //第二排
    rec.top +=30;
    rec.bottom = rec.top+25;

    rec.left =77 +207*0;
    rec.right = rec.left +205;
    m_Static_BeginTime.Create(_T(""), WS_CHILD|WS_VISIBLE|SS_LEFT |WS_BORDER,rec,this);

4.改变文字

void    CClientDlg::StatusTitleSetText(E_Client_Static_Index    eIndex, CString s) //更新状态栏
{
        switch(eIndex)
        {
            case    E_CLIENT_STATIC_iniTxt://ini配置信息
                    m_Static_iniTxt.SetWindowText(s);//ini配置信息
                    break;

            case    E_CLIENT_STATIC_BeginTime://开始运行时间
                    m_Static_BeginTime.SetWindowText(s);//开始运行时间

                    break;
            default:
                    break;
        }
       
        break;
}

 

5.改变颜色

void    CClientDlg::StatusTitleSetFocusNormal(E_Client_Static_Index eIndex, BOOL bflag)//
{
    switch(eIndex)
    {
    case    E_CLIENT_STATIC_iniTxt://ini配置信息
        m_b_Static_iniTxt = bflag;
        m_Static_iniTxt.Invalidate();
        break;

    case    E_CLIENT_STATIC_BeginTime://开始运行时间
        m_b_Static_BeginTime = bflag;
        m_Static_BeginTime.Invalidate();
        break;

    default:

        break;
    }

}

 

5.改变颜色

HBRUSH CClientDlg::OnCtlColor(   CDC* pDC,CWnd* pWnd,UINT nCtlColor )
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    HBRUSH returnhbr = hbr;

    //如果为静态框
    //红绿两种对应static text控件的画刷
    static HBRUSH brushFocus = ::CreateSolidBrush(RGB(250,0,0));
    static HBRUSH brushNormal = ::CreateSolidBrush(RGB(254,254,254));
    COLORREF  colorFocus = RGB(250,0,0);
    COLORREF  colorNormal = RGB(254,254,254);


    if (IDC_LIST_TICKET_DEBUG ==pWnd->GetDlgCtrlID() )
        return  returnhbr;

    if (CTLCOLOR_STATIC == nCtlColor)
    {
        enum
        {
            E_NULL,//没有更新状态栏
            E_NORMAL,//状态栏普通模式
            E_FOCUS//状态栏高亮模式
        };

        int    siStatusflag = E_NULL;

        if (m_Static_iniTxt == *pWnd)
        {
            if (m_b_Static_iniTxt)
            {
                siStatusflag =E_FOCUS;
            }
            else
            {
                siStatusflag =E_NORMAL;
            }
        }
        else if (m_Static_BeginTime == *pWnd)
        {
            if (m_b_Static_BeginTime)
            {
                siStatusflag =E_FOCUS;
            }
            else
            {
                siStatusflag =E_NORMAL;
            }
        }
 

        if (E_FOCUS ==siStatusflag)
        {
            //状态栏中有高亮
            pDC->SetBkColor(colorFocus);
            returnhbr = brushFocus;
            return    returnhbr;
        }
        else if (E_NORMAL ==siStatusflag)
        {
            //状态栏无高亮
            pDC->SetBkColor(colorNormal);
            returnhbr = brushNormal;
            return    returnhbr;
        }
        else
        {

        }

    }

    return returnhbr;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值