Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Check Box с прозрачным фоном


Автор: Leopard567 16.5.2006, 22:42
Как сделать Check Box с прозрачным фоном?

Я делаю:
Код

HBRUSH CTerri::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
    if  ( m_ctrlCH1.GetSafeHwnd() == pWnd->GetSafeHwnd())    
    {        
        pDC->SetBkMode(TRANSPARENT);
        hbr = (HBRUSH)GetStockObject(NULL_BRUSH);        
    }


    return hbr;
}

Получается черный фон.
(Со Static Text это работает правильно)

В чём моя ошибка? 

Автор: Leopard567 20.5.2006, 10:22
А как перерисовать фон у Check Box? 

Автор: GremlinProg 20.5.2006, 22:30
на WM_ERASEBKGND рисуй родителя, при этом у него(родителя) не должен стоять стиль WS_CLIPCHILDREN

Добавлено @ 22:34 
а вообще посмотри NM_CUSTOMDRAW. Это общее сообщение-уведомление при прорисовке.
При dwDrawStage=CDDS_POSTERASE можешь перекрасить задний фон 

Автор: Earnest 22.5.2006, 15:24
CheckBox NM_CUSTOMDRAW не посылает (потому что это механизм WM_NOTIFY, только для common controls), так что только первый вариант. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)