我在对话框上设置了一个tab控件,tab控件上添加了一些静态文本。由于tab控件有默认的背景色,和对话框的不一样,静态文本的背景色貌似和对话框一样,所以看起来特别怪,我想要静态文本的背景色和tab一样。如何实现啊?

解决方案 »

  1.   

    晕死了,不会添加图片,给个链接,麻烦大家看一下把~~~~
    http://hi.csdn.net/space-7841403-do-album-picid-1060665-goto-down.html
      

  2.   

    tab控件设成透明在属性里设或程序里设
      

  3.   

    继承CStatic派生一个新的static类,例如CMyStatic,只需要在
    CMyStatic类中加上HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor)就行了:
    HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor)
    {
    // TODO:  在此更改 DC 的任何属性 // TODO:  如果不应调用父级的处理程序,则返回非 null 画笔
    pDC-> SetBkMode(TRANSPARENT); 
    return HBRUSH(GetStockObject(HOLLOW_BRUSH));
    }
    使用CMyStatic,背景是透明的
      

  4.   

    自绘,把原来被遮住的地方给贴上去
    当然,如果你只是单纯的静态使用tab控件。不如用cbutton代替它,原理是一样的
      

  5.   

    我要是把tab设成透明的话,上面的所有控件就看不见了~~~~~,鼠标滑过的时候编辑框就会闪出来,其他的还是看不见~~~~~~~
      

  6.   


    我想确认一下啊,我是应该改静态文本的,还是tab控件的啊?
      

  7.   

    cbutton的控件外面还有一个线框,那个可以去掉么?
      

  8.   

    可以的,甚至你可以在主窗口的OnPaint中自己画一个TAB,当然,如果你可以使用CMFCButton类的话按钮的边框就更容易去掉了
      

  9.   

    我用了CMFCButton类的话按钮,去掉边框后颜色又和对话框颜色一样了,我哭了~~~
      

  10.   

    ?你要完全透明吗
    那么,CMFCButton类里面有一个变量,可以将其设置为true使得按钮透明
    当然,也可以派生CMFCButton类,重载其onPaint。然后。
      

  11.   

    谢谢各位出的注意,大家很热心,但都比较麻烦下面给出我的方法:
    在对话框的类中,利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息)HBRUSH CDlgRef::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO:  在此更改 DC 的任何特性
             
    if(nCtlColor==CTLCOLOR_STATIC)
    {
           HBRUSH hBrush=(HBRUSH)::GetStockObject(NULL_BRUSH);
           pDC->SetBkMode(TRANSPARENT);
           return hBrush;
    }
    // TODO:  如果默认的不是所需画笔,则返回另一个画笔
    return hbr;
    }这种方法的优势在于改动较小,也比较容易,适合初学的我。不过就是需要在有tab控件的每个对话框,都得写一遍。没有tab控件的,不需要写。希望对大家有用把!
      

  12.   


    4楼  
    hideforever的回答是对的,对于很多对话框都有tab控件的时候很适用。
    我的项目中用到的不多,按照我的方法比较简单些。再此,谢谢各位的热情了。把分全给了 hideforever了