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()

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

     

  • 相关阅读:
    BZOJ1316 树上的询问
    BZOJ2599 IOI2011Race
    BZOJ2594 [Wc2006]水管局长数据加强版
    BZOJ3052 [wc2013] 糖果公园 【树上莫队】
    BZOJ4530 BJOI 2014 大融合
    QTREEⅠ SPOJ
    BZOJ 3514: Codechef MARCH14 GERALD07加强版 [LCT 主席树 kruskal]
    BZOJ3669 NOI2014魔法森林
    BZOJ2002 弹飞绵羊
    BZOJ1878 [SDOI2009]HH的项链
  • 原文地址:https://www.cnblogs.com/kex1n/p/3998537.html
Copyright © 2011-2022 走看看