Re: Цвет диалога по наступлению события
От: Mescalin  
Дата: 15.06.06 09:49
Оценка:
Нашел еще 2 способа перекрасить окно:

1)
CRect r;
GetClientRect(&r);
pDC->FillRect(&r, &myColor);
return CDialog::OnEraseBkgnd(pDC);

2)
CBrush backBrush(RGB(255, 0, 0));
// Записываем старую кисть
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
GetClientRect(&rect);
pDC->GetClipBox(&rect); // Стираем нужную область
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),PATCOPY);

Разместил их обработчике события WM_ERASEBKGND. Но для того чтобы изменился фон необходима прерисовка диалога (любое действие над ним). Пробовал вызывать RedrawWindow() — работает, но при смене цвета окно моргает. При всем при применении первого способа закрашивания фон эдитов становится белым, и уже потом обратно в серый нее возвращается. Во втором случае фон под эдитами просто остается серым. Подскажите, как быть?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.