我重载了 WM_ERASEBKGND 也在对话框中加入了背景图案,出现的问题是什么控件都不透明,虽然我在设计对话框是对控件都指明的透明选项。不知为什么?

解决方案 »

  1.   

    你得重载OnCtlColor函数
    我经常这样,定义一个类画刷,生成自己要的然后返给OnCtlColor
    HBRUSH CAddressSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {//定义画刷
    DeleteObject(m_hBrush);
    if(nCtlColor==CTLCOLOR_EDIT || nCtlColor==CTLCOLOR_LISTBOX)
    {
    m_hBrush=CreateSolidBrush(GetSysColor(COLOR_3DFACE));
    pDC->SetBkColor(GetSysColor(COLOR_3DFACE));
    }
    else
    {
    LOGBRUSH lb;
    lb.lbStyle=BS_NULL;
    m_hBrush=CreateBrushIndirect(&lb);
    pDC->SetBkMode(TRANSPARENT);
    }
    return m_hBrush;
    }