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


Автор: kometa_triatlon 14.5.2005, 21:05
Как перекрасить диалоговое окно?
Код

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

    HBRUSH brush=CreateSolidBrush(RGB(255,255,255));

    if(nCtlColor == CTLCOLOR_DLG){
            pDC->SetBkColor(RGB(255,255,255));
            hbr=brush;
    }


    if(nCtlColor == CTLCOLOR_STATIC){
            pDC->SetBkColor(RGB(255,255,255));
            pDC->SetTextColor(RGB(0,0,255));
            hbr=brush;
    }

    return hbr;
}

Можно так, но работает лишь с некоторыми контролами. Перекрашивает фон диалога, статический текст... Кнопки у меня почему-то так и остались серыми( CTLCOLOR_BTN почему-то не сработал).
Но ведь есть еще небольшая рамка вокруг окна, меню, рамки groupbox. Как их перекрасить?

Автор: Coocky 14.5.2005, 22:32
"Красота" диалога такой, к сожалению и останется..
Цитата
Кнопки у меня почему-то так и остались серыми( CTLCOLOR_BTN почему-то не сработал).

Должен...
Но попробуй по другому.Создай свой класс кнопки, и перегрузи виртуальную функцию OnNotify()
определи, есть ли сообщение о перекраске( через if) и там крась.
Но я всегда кнопку красил через перегрузку для нее вирт.функции DrawItem( )

Автор: kometa_triatlon 15.5.2005, 00:50
Цитата
о я всегда кнопку красил через перегрузку для нее вирт.функции DrawItem( )

Это как? smile
Можно пример кода?

Автор: Coocky 15.5.2005, 13:42
kometa_triatlon
Поищи в Маленькие тайны.МФС.
Там есть раскраска листбока и листконтрола!
Поищи ,есть про кнопку(не в тайнах),но там то же есть мои советы(только давно это было,так что ищи не только в ветке МФС,но и в С++).
Кстати там и найдешь,как сделать так,что б твоя созданая кнопку работала "правильно" и быстро smile

Автор: kometa_triatlon 16.5.2005, 23:00
Почитал вашу эпопею с кнопкой smile smile
Потом попробовал создать свою, не вышло, иду юзать метод RTFM...

Так это хорошо, а для меню варианты в природе (то есть в MFC ) существуют? Можно изменять его цвет?

Автор: Coocky 17.5.2005, 17:58
Еще раз повторяю-перегрузка виртуальной функции DrawItem smile
Цитата
Потом попробовал создать свою, не вышло

Код в студию!

Автор: kometa_triatlon 18.5.2005, 00:45
Цитата
Код в студию!

Да не стоит, я для начала попробую что-то выучить smile

Цитата
Еще раз повторяю-перегрузка виртуальной функции DrawItem

Для меню то есть?

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