vc Static背景 颜色

本文介绍了一种处理WM_CTLCOLOR消息的方法,通过重写OnCtlColor函数,实现对静态控件背景颜色及文本颜色的动态修改。该方法允许在运行时更改窗口控件的颜色属性,提供了一个灵活的界面定制方案。
摘要由CSDN通过智能技术生成

处理   WM_CTLCOLOR   消息

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

        if   (nCtlColor==CTLCOLOR_STATIC)      
        {
                pDC-> SetBkMode(TRANSPARENT);
                return   m_backHbrush;
        }
        return   hbr;
}
m_backHbrush定义为成员变量,HBRUSH类型,在OnInitDialog中初始化:
m_backHbrush=CreateSolidBrush(RGB(0,255,255));

 

void CXXXDlg::OnBnClickedBtnChange(){ // get window handle of your static control CStatic* pStatic = (CStatic*)(GetDlgItem(IDC_STATIC_VARIETY)); // init random generator srand(unsigned(time(NULL))); // release HBRUSH object last time ::DeleteObject(m_hbrMyBK); // create new brush and text color m_hbrMyBK = CreateSolidBrush(RGB(rand() % 256, rand() % 256, rand() % 256)); m_crlMyText = RGB(rand() % 256, rand() % 256, rand() % 256); // force to repaint your static control pStatic->Invalidate(TRUE);}HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // if your static control... if(pWnd->GetDlgCtrlID() == IDC_STATIC_VARIETY){ pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(m_crlMyText); hbr = m_hbrMyBK; } return hbr;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值