我先用StretchBlt帖一幅位图在对话框上
然后重载WM_CTLCOLOR 调用OnCtlColor
里面我是这样写的;
  if (nCtlColor==CTLCOLOR_STATIC) 
   
   { 
   pDC-> SetTextColor(RGB(255,0,0));     //设置字体颜色
   pDC-> SetBkMode(TRANSPARENT); //设置字体背景为透明
  
   
   } 
设置字体颜色都可以,但我想把 静态文本框背景色 改成背景颜色却不行;
谢谢大家帮忙

解决方案 »

  1.   

    大括号中用pDC->SetBkColor()设置文字背景颜色.
    再return一个你要改的颜色的画刷应该就行了.
      

  2.   

       你创建一个透明的画刷,return 这个透明的画刷就是OK
      

  3.   


    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if( nCtlColor == CTLCOLOR_STATIC)   //( IDC_CHECK_SELECT_ALL== pWnd->GetDlgCtrlID() )
    {
    //static CBrush brush(RGB(228,239,255));
    static CBrush brush(RGB(255,255,255)); pDC->SetBkMode(TRANSPARENT); return brush; }
    return hbr;
      

  4.   

    大家可能误解我的意思了,我是把CStatic控件放在对话框上,虽然CStatic控件上的文字显示了,但文字所在矩形区域却有个白色背景,看着很别扭,我想用 pDC-> SetBkMode(TRANSPARENT)解决,却不行
      

  5.   

    哦,我知道了
    if( nCtlColor == CTLCOLOR_STATIC)   
        {
            pDC->SetBkMode(TRANSPARENT);
    return   (HBRUSH)::GetStockObject(NULL_BRUSH);
        }
    就解决了
    谢谢大家