Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Tab Control и градиентная заливка

9.2K
23 марта 2006 года
llllDeadMan
32 / / 28.11.2005
Такая проблема: в XP у Tab Control'а фон имеет градиентную заливку, убираю фон у диалогов через OnCtlColor:
 
Код:
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(HOLLOW_BRUSH);
return hbr;

При этом со статиками все норм, за исключением Group Box'а (у него становится видна линия за надписью), а с Edit'ами и Radio Button'ами вообще траблы, фон становится черным...
Можно конечно убирать фон только у отдельных контролов, но тогда что делать с Radio Button'ами, Check Box'ами??? Как нормально избавиться от серого фона у контролов???
324
23 марта 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by llllDeadMan
Такая проблема: в XP у Tab Control'а фон имеет градиентную заливку, убираю фон у диалогов через OnCtlColor:
 
Код:
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)::GetStockObject(HOLLOW_BRUSH);
return hbr;

При этом со статиками все норм, за исключением Group Box'а (у него становится видна линия за надписью), а с Edit'ами и Radio Button'ами вообще траблы, фон становится черным...
Можно конечно убирать фон только у отдельных контролов, но тогда что делать с Radio Button'ами, Check Box'ами??? Как нормально избавиться от серого фона у контролов???



А почему используешь HOLLOW_BRUSH? Прозрачная кисть NULL_BRUSH.
У Group Box будет линия за текстом т.к. ты установил TRANSPARENT. Пробуй его обрабатывать отдельно, подбирая фон.
Radio, Check Box относятся к Button и должны соответсвенно обрабатываться

9.2K
23 марта 2006 года
llllDeadMan
32 / / 28.11.2005
Цитата:
Originally posted by AndreySar
А почему используешь HOLLOW_BRUSH? Прозрачная кисть NULL_BRUSH.
У Group Box будет линия за текстом т.к. ты установил TRANSPARENT. Пробуй его обрабатывать отдельно, подбирая фон.
Radio, Check Box относятся к Button и должны соответсвенно обрабатываться


Пока остановился на таком варианте:

 
Код:
if(!(nCtlColor&CTLCOLOR_EDIT&CTLCOLOR_BTN))
    {
        pDC->SetBkMode(TRANSPARENT);
        hbr = (HBRUSH)::GetStockObject(NULL_BRUSH);
    }

С NULL_BRUSH результат один в один как и с HOLLOW_BRUSH... Если с Group Box'ом еще можно что-то придумать, то с Radio и Check Box'ами вообще не знаю что делать, черный фон и все... :(
9.2K
03 апреля 2006 года
llllDeadMan
32 / / 28.11.2005
усе... наконец-то нашел... 8)
http://www.codeproject.com/wtl/ThemedDialog.asp
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог