如何在Static控件中显示文本,并改变背景颜色!同时还要让文本能在控件中显示出来比较规范一些!

解决方案 »

  1.   

    用类重载。。VCBASE上面有这个代码
      

  2.   

       CWnd *pwnd=GetDlgItem(IDC_STATIC1);//获得static1的句柄。
       CDC* pdc=pwnd->GetDC();
       CBrush pbrush;
       pbrush.CreateSolidBrush(RGB(255,0,0));//创建一个画刷(红色)
       pdc->SelectObject(&pbrush);
       CRect rect;
       pwnd->GetClientRect(rect);
       pdc->FillRect(&rect,&pbrush);  //用画刷画背景
       SetDlgItemText(IDC_DRAW,"哈哈");
      // 或者用下面
       //pwnd->SetWindowText("哈哈");
      

  3.   

    请问楼上的我照着你的代码打完了为什么没看到IDC_STATIC的背景色改变呢?void CSettextcolorDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    CWnd *pWnd=GetDlgItem(IDC_STATIC);
    CDC *pDc=pWnd->GetDC();
    CBrush pBrush;
    pBrush.CreateSolidBrush(RGB(255,0,0));
    pDc->SelectObject(&pBrush);
    CRect rect;
    pWnd->GetClientRect(rect);
    pDc->FillRect(&rect,&pBrush);
    pWnd->SetWindowText("红色");
    }
      

  4.   

    http://blog.csdn.net/miaoshengwu/archive/2007/11/14/1884000.aspx
      

  5.   

    处理对话框的OnCtlColor函数, m_pBrush是一个全局的CBrush指针,存放对话框的背景色,不设应该也没问题,
    关键在"if (nCtlColor == CTLCOLOR_STATIC)", 
    CView和CDialog的处理一样
    如果只处理颜色,这种方法应该是最简便的,但是不够灵活
    太复杂的,还是重写CStaticHBRUSH CCustomDrawDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if (nCtlColor == CTLCOLOR_STATIC)
    {
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetBkColor(m_crBK);
    pDC->SetTextColor(m_crText);
    }
    return (HBRUSH)m_pBrush->m_hObject;
    }
      

  6.   

    回复yuzhongzhu:
    我在vc中试过的,调试通过。你再试试吧
      

  7.   

    不能为IDC_STATIC,请更改该控件的ID即可
    ==============================
    雨中竹 
    等 级:
     发表于:2007-11-19 12:38:003楼 得分:0 
    请问楼上的我照着你的代码打完了为什么没看到IDC_STATIC的背景色改变呢?  
      

  8.   

    OnCtlColor方法我试过了,可是只能在有文字的地方有背景色,其他地方还是原来的颜色,不好看。。