zoukankan      html  css  js  c++  java
  • MFC改变控件颜色

    from http://www.cppblog.com/FandyM/archive/2010/07/21/120972.aspx

    MFC应用程序中,要改变控件的背景色可通过重载OnCtlColor()函数来实现。方法是在该函数中设置所需颜色后再返回一个画刷句柄便可 重绘控件背景色。OnCtlColor()函数对于控件背景色的处理是通过捕捉相应的控件消息来实现的。

    常用的此类消息有:   
    CTLCOLOR_DLG   对话框   
    CTLCOLOR_EDIT   编辑框 
    CTLCOLOR_LISTBOX   列表框   
    CTLCOLOR_MSGBOX   消息框 
    CTLCOLOR_SCROLLBAR   滑动条 
    CTLCOLOR_STATIC   静态文本框、矩形等。 

    主要有三步:
    1. 声明消息响应函数
    //{{AFX_MSG(CMyDialog) 
    afx_msg   HBRUSH   OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor); 
    ……
    //}}AFX_MSG 

    DECLARE_MESSAGE_MAP()   

    2. 实现消息响应函数
    以编辑框举例:

    HBRUSH   CMyDialog::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)  
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
       // CtlColor(pDC, pWnd, nCtlColor);
        if(nCtlColor == CTLCOLOR_EDIT && pWnd->GetDlgCtrlID() == IDC_EDIT1)
        {
            pDC->SetTextColor(RGB(0,0,255));
            pDC->SetBkColor(RGB(255,0,0));//设置文本背景色
            pDC->SetBkMode(TRANSPARENT);//设置背景透明
            hbr = ::CreateSolidBrush(RGB(255,0,0));
        }
        return hbr;
    }


    3. 添加消息映射
    BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
        ON_WM_CTLCOLOR() 
    END_MESSAGE_MAP()

    注意:此方法不适用于按纽控件。 

     

  • 相关阅读:
    常用模板
    pascal 的字符串操作
    war2 洛谷模拟赛day2 t3 状压
    状压搜索 洛谷T47092 作业
    Milking Order
    洛谷九月月赛T1 思考
    C数列下标 牛客OI赛制测试赛2
    钓鱼 洛谷p1717
    机房人民大团结(DP)
    Spark的Straggler深入学习(2):思考Block和Partition的划分问题——以论文为参考
  • 原文地址:https://www.cnblogs.com/kex1n/p/3998537.html
Copyright © 2011-2022 走看看