对话框添加消息OnCtlColor
添加代码:
switch(pWnd->GetDlgCtrlID()) 

case IDC_RADIO1:
case IDC_RADIO2:
pDC->SetBkMode(TRANSPARENT); 
return (HBRUSH)GetStockObject(NULL_BRUSH); 
break;  default: 
break; 
}

解决方案 »

  1.   

    WM_CTLCOLOR映射了没?
    BEGIN_MESSAGE_MAP(CDlgTTTDlg, CDialog)
    //{{AFX_MSG_MAP(CDlgTTTDlg)
    ...
    //ON_WM_CTLCOLOR()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO: Change any attributes of the DC here switch(nCtlColor)  
    {
    case CTLCOLOR_STATIC:
    if (pDC) pDC->SetBkMode(TRANSPARENT);
    return (HBRUSH)GetStockObject(NULL_BRUSH);
    break;
    default:
    break;
    }

    // TODO: Return a different brush if the default is not desired
    return hbr;
    }
      

  2.   

    把上面的那个//ON_WM_CTLCOLOR()映射放开(写错了),
      

  3.   

    你是不是裁剪了子窗口(CLIPCHILDREN)属性设为TRUE了 没的话上面的答案肯定是可以的
      

  4.   


    这个属性是false的。没设置。我知道上面的方法能改变其他控件的背景,现在其他控件文字后面都没有其他颜色的,感觉就像是写在DLG上的。但是就只有这个checkbox控件不得行啊
      

  5.   


    这个是改变static控件的背景,没办法改变checkbox的。要不上个图来给我看看吧!
    我做的界面太丑了·····
      

  6.   

    checkbox的onerasebkgnd里得到父窗口dc把自己所处位置的那块矩形背景拷下来画上。
      

  7.   

    checkbox不透明的地方就是个Static啊,截个图给你,CSDN竟然不能传.bmp,( ⊙ o ⊙ )啊!
      

  8.   


    照着你写的
    HBRUSH CSHA256Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO:  在此更改 DC 的任何属性
    switch(nCtlColor)
    {
    case CTLCOLOR_STATIC:
    if(pDC)
    pDC->SetBkMode(TRANSPARENT);
    return  (HBRUSH)GetStockObject(NULL_BRUSH);
    break;
    default:
    break;
    }
    // TODO:  如果默认的不是所需画笔,则返回另一个画笔
    return hbr;
    }
    结果是这样
    并且,如果我返回的是一个WHITE_BRUSH 复选框的背景会变为白色的。但是就是不会变为你那样的
      

  9.   


    你那个checkbox是M$的标准控件吗?重写了没?
    你的运行环境了?你自己另外弄个dialog的工程试试ok不,暂时别用CSHA256Dlg,看看效果不行email给我,代码不复杂的话
      

  10.   

    用skinsharp库看看行不行
    那个aero效果貌似不错
    另外就只能参考gdi+了
      

  11.   

    Check上不要写文字,在Check后面加个Static显示文字就好了
      

  12.   


    还是不行··新建个工程都不行。
    我是visual 08 win7···还有··ls,那样子确实丑得没那么多了··
      

  13.   

    关注,translate属性选中一下试试
      

  14.   

    visual 08和vs2005、vc6的对话框背景的代码不同,我也遇到这个问题,在vs2005上就好好的,在vs08上得把translate属性设置一下
      

  15.   


    HBRUSH CSHA256Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);    // TODO:  在此更改 DC 的任何属性
        switch(nCtlColor)
        {
        case CTLCOLOR_STATIC:
            pDC->SetBkMode(TRANSPARENT);
            return  (HBRUSH)GetStockObject(HOLLOW_BRUSH);
            break;
       
        }
        return hbr;
    }
    把NULL_BRUSH改成HOLLOW_BRUSH
      

  16.   

    visual 08 win7,我暂时没这样的环境,看来是比较特殊了,关注结论...
      

  17.   

    处理完WM_CTLCOLOR可否,你的开发环境是??
    想知道在VS2008+Win7下是否真有异常?
    这个帖子好多天啦~有人试么,求个结论~
      

  18.   

        是真有异常,我上网找了一个能使背景透明的,但是一旦我第二次输入,或者鼠标第二次移动到编辑框,编辑框就全黑了。代码被我删了,是在pudn上找的一个代码。
        不过倒是可以把编辑框后面的背景图截下来,然后弄成编辑框的背景,只是这样一来,有多少个编辑框,就得弄多少个画刷了。并且,我可以给编辑框弄背景色什么的,就是不能弄成透明,弄成透明,必然有错,网上我能找的方法都试过了。
      

  19.   

    弄混了checkbox背景都能上色的,就是不能弄成透明的,不知道为什么·后来用a5796489 的方法,稍微好看点点的了
      

  20.   

    我猜的checkbox是button和static的组合你只把static透明了前边的那个button还是有背景的
      

  21.   

    win7 下 最佳效果模式 确实像楼主说的那样,最佳性能就没问题。
    这叫个啥问题啊?让我们开发者怎么过啊?
      

  22.   

    我也遇到相同的问题,只有静态文本可以透明、button和check-box都透明不了
      

  23.   

    是这样的,除了处理WM_CTLCOLOR消息外,还需要处理WM_ERASEBKGND消息,如果背景图片是不是放在WM_ERASEBKGND消息中处理,就会产生黑色的底色,原因可能是没有画背景底色,造成系统自动以黑色填充了。大家可以试一下在WM_ERASEBKGND中load图片
      

  24.   

    时隔这么长时间,我来说一下,UNICODE工程下与非UNICODE工程很多控件表现都是不一样的。有人行,是因为非UNICODE工程,有人不行,是因为使用的UNICODE工程。唉~
      

  25.   

    UNICODE工程下与非UNICODE工程用什么区别??怎样知道一份源代码是否使用的UNICODE工程?
      

  26.   

    CButton  CEdit 我都解决了 ^^  而且还是不规则 的 :)
    都是 MFC 类重载 增加了些处理 
      

  27.   

    两种方法,一种是在创建向导里面,有个使用Unicode库复选框。另一种是在工程属性->常规里面,有个使用Unicode字符集。
      

  28.   

    两种方法,一种是在创建向导里面,有个使用Unicode库复选框。另一种是在工程属性->常规里面,有个使用Unicode字符集。
    区别说来话长,你可以GOOGLE一下吧。简单说就是宽字符和多字节的区别。