是不是来处理ON_WM_CTLCOLOR()呢?
把处理背景的代码放进去就可以了吗?下面这段代码行吗?
HBRUSH CSystemSet::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
    if (nCtlColor == IDC_SYSTEM_SET_CHECK_LOG)
    {
    static CBrush hbr;
    CRect rt;
    GetClientRect(&rt);
    if(hbr.m_hObject==NULL){
        HBITMAP hbit=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"c:\\one.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_COLOR);
        CBitmap*bm=CBitmap::FromHandle(hbit);
        hbr.CreatePatternBrush(bm);
        bm->DeleteObject();
    }
    pDC->FillRect(&rt,&hbr);            
    }
    return hbr;
}

解决方案 »

  1.   

    不好意思啊!
    我的问题是这样的,我的DIALOG的背景是BMP,我现在想把Check和Radio的设置为透明,这样就跟DIALOG的背景一样了!
    应该怎么来做呢?
      

  2.   

    CButtonST它提供了这个功能,你这个人,呵呵。
    大家给你说了那末多CButtonST的话你就是不信,呵呵。
      

  3.   

    HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if(nCtlColor==CTLCOLOR_STATIC)
    {
    pDC->SetBkMode(TRANSPARENT);
    return (HBRUSH)GetStockObject(NULL_BRUSH);
    }
    return hbr;
    }
      

  4.   

    HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if(nCtlColor==CTLCOLOR_STATIC)
    {
    pDC->SetBkMode(TRANSPARENT);
    return (HBRUSH)GetStockObject(NULL_BRUSH);
    }
    return hbr;
    }
    谢谢你给我的回复,这段代码在DIALOG中可以改变背景的,但我的DIALOG是不是从CDialog继承来的,是从CPropertypage中继承来的,我在从CPropertypage中改的时候就改不了是什么原因呢?
    谢谢你!
      

  5.   

    你是在那里贴背景图的,怎么我测试你的代码正常
    HBRUSH CMyPro::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    if(nCtlColor==CTLCOLOR_STATIC)
    {
    pDC->SetBkMode(TRANSPARENT);
    return (HBRUSH)GetStockObject(NULL_BRUSH);
    } // TODO: Return a different brush if the default is not desired
    return hbr;
    }BOOL CMyPro::OnEraseBkgnd(CDC* pDC) 
    {
    // TODO: Add your message handler code here and/or call default
    HBITMAP hBmp = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
    CDC dcMem;
    dcMem.CreateCompatibleDC(pDC);
    HBITMAP hOldbmp = (HBITMAP)dcMem.SelectObject(hBmp);
    pDC->StretchBlt(0,0,300,200,&dcMem,0,0,48,48,SRCCOPY);
    dcMem.SelectObject(hOldbmp);
    return TRUE;
    }