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


Автор: torero 30.4.2006, 11:08
    Нахожусь в окне Вид. Используя класс CColorDialog получил,
  параметры нового цвета. Как теперь изменить цвет окна с 
  сохранением его содержимого?
  

Автор: cozzzy 30.4.2006, 12:41
В классе хранишь переменную COLORREF
После получения цвета сохраняешь нужный цвет
В OnDraw делаешь 

Код

CRect rc;
GetClientRect(&rc);
pDC->FillSolidRect(rc, m_clr);
 

Автор: torero 3.5.2006, 22:47
    Спасибо. Цвет меняется.
  Но осталась небольшая проблема. Дело в том, что у меня режим MDI.
  Четыре шаблона, четыре вида. Чтобы не определять четыре раза
  параметры цвета, я поставил их определение в CMainFrame, а три
  параметра: red,green,blue хотел бы передавать в Виды.
   Но можно ли их передать и как?   
   

Автор: cozzzy 4.5.2006, 03:15
Добавь в каждый класс вида функцию вида 
Код

void CSomeView::SetBackColor(const COLORREF& clr)
{
   m_clr = clr;
}

При смене цвета для каждого объекта вид дернуть эту функцию  

Автор: torero 5.5.2006, 19:42
    Здесь я ничего не понял. Ведь m_clr определяется в CMainFrame, а
  clr должно быть в Виде, или наоборот. К тому же, чтобы дёрнуть
  функцию, нужно её вызвать с фактическим параметром, взамен clr.
  Объясни, пожалуйста, подробнее.  

Автор: cozzzy 6.5.2006, 12:06
Тю, ну добавь в классы вида переменные COLORREF 

Автор: torero 7.5.2006, 08:15
   Всё получилось. Правда, внёс изменения, но теперь работает.
   Большое спасибо за советы. 
   
   И ещё: не знаю, как выбрать конверт,  чтобы закрыть тему.
   В итоге сдвинул её в новые. 

Автор: Earnest 10.5.2006, 16:37
В начале формы быстрого ответа есть ссылка "Пометить вопрос как (не)решенный", доступная авторам и модераторам. Вот ее и надо жать. Что я и делаю за тебя. 

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