用mfc建立基于对话框的额 项目 
在对话框的初始化中加载了 白色背景图。结果对话框上的  static text 控件都有阴影了(虽然设置了 控件透明属性)请问如何解决这个问题 使得控件没有阴影

解决方案 »

  1.   

    是不是static text 控件有白色矩形块背景?
    是的话
    在该类头文件中定义一个CBrush m_brush;
    在构造函数m_brush.CreateStockObject(HOLLOW_BRUSH);
    在HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    return m_brush;
    }不知道是不是你说的,是的话,试试吧
      

  2.   

    直接这样呢
    pDC->SetBkMode(TRANSPARENT);
    pDC->TextOut(75,33,str,lstrlen(str));
      

  3.   

    和你遇到同样的问题,已经解决了:HBRUSH CXXXDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CXXXDLG::OnCtlColor(pDC, pWnd, nCtlColor); 
    if (pWnd->GetDlgCtrlID())
    {
    pDC->SetBkMode(TRANSPARENT); 
    //pDC->SetTextColor(RGB(128,128,255));
    //pDC->SetBkColor(RGB(255,255,255));
    return (HBRUSH)GetStockObject(HOLLOW_BRUSH); 
    }
    // TODO: Return a different brush if the default is not desired 
    return hbr; 
    }
    呵呵。
      

  4.   

    那么麻烦做什么?直接在 工程的 CEasyComApp::InitInstance()下添加代码: //设置对话框背景和文本颜色(对所有控件生效)======
    SetDialogBkColor(RGB(255,255,255), RGB(0,0,0));
    //==========================搞定!
      

  5.   

    这是正常的,没有别的方法可以解决。。  你只能重写它 又或者不要用 Text 控件。
      Picture Control  将它的 type 设置 Owner Draw 属性。
    使用方法跟 text 差不多
      

  6.   

    将static text控件的背景颜色全改成白色。
      

  7.   

    HBRUSH CXXXDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    里面修改你需要的类型颜色等
      

  8.   

    原因在于static控件的背景设置存在问题, 直接改成背景透明就可以了:
    HBRUSH CMyDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 

            HBRUSH hbr = CMyDLG::OnCtlColor(pDC, pWnd, nCtlColor); 
            //只对某一个static控件有效
            //if (pWnd->GetDlgCtrlID() == IDC_STATIC_YOURS) 
            //对所有static控件有效
            if (nCtlColor == CTLCOLOR_STATIC)
            { 
                   //创建绿色背景画刷
                   HBRUSH m_brush = CreateSolidBrush(RGB(0, 255, 0);
                   //设置背景透明
                   pDC->SetBkMode(TRANSPARENT); 
                   //返回背景画刷, 改变static背景颜色 
                   return m_brush; 
            } 
            return hbr;