HBRUSH dlgtest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    switch (nCtlColor)
    {
        case CTLCOLOR_BTN://按钮?
        case CTLCOLOR_STATIC://我们所需要改画的静态
        {
            pDC->SetBkMode(TRANSPARENT);//透明
        }
        //其他东西
    }
    return(CDialog::OnCtlColor(pDC, pWnd, nCtlColor));
}

解决方案 »

  1.   

    static Edit 还行
    button ListCtrl 就完了
    根本透明不了
    要透明button 咋办?
      

  2.   

    case CTLCOLOR_BTN:
         pDC->SetBkMode(TRANSPARENT);//透明
    CTLCOLOR_BTN   Button control
    CTLCOLOR_DLG   Dialog box
    CTLCOLOR_EDIT   Edit control
    CTLCOLOR_LISTBOX   List-box control
    CTLCOLOR_MSGBOX   Message box
    CTLCOLOR_SCROLLBAR   Scroll-bar control
    CTLCOLOR_STATIC   Static control 
      

  3.   

    哎!不好意思,没有看清楚,楼上的是right!
      

  4.   

    To 111222(decay generation) ]
    真的是不行啊,我试过了,用OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    只能让static和Edit透明,而且Edit一旦超过他的一行范围,就重叠起来,黑乎乎的一片
    而对button,ListView跟本就没门儿
      

  5.   

    自己写吧!
    你在AfxRegisterWndClass( UINT nClassStyle, HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0 ); 
    时背景画刷设成0,包透明。
      

  6.   

    呵呵,这个问题我也经常遇到
    和CDC的保存和恢复有关
    我是在创建一个和BMP相关的DC的时候碰到的。
      

  7.   

    To 111222(decay generation) 
       要不,你能否给俺个例子瞅瞅,岸实在是没法度了
    To Michael_yu(Michael_yu)能告诉我详细一点吗?
    To ForApply(yinyong)
       那你能否告诉俺,你是咋解决的?这里不是俺的贴子,按没法给大家分
    请到http://www.csdn.net/expert/topic/163/163961.shtm
    里来讨论,谢谢
      

  8.   

       CStatic 是从CWnd继承的。你直接从CWnd继承写一个CMyStatic,Create时需要参数lpszClassName,你就用AfxRegisterWndClass()解决。至于CButton...都类似。
       其实,我这样写已经超出了”透明”的问题.自己写控制你可以很随意。而且如果你再把CWnd抽象一下的话,你的控制库可以比较方便的移植在不同的os上。
       这个工程比较大,不过你可以从你需要的开始不用实现所有的成员。比如CButton,我估计一般的程序员30分钟就可以写好。