CView: WM_PAINT?
От: sushko Россия  
Дата: 15.08.02 20:28
Оценка:
По команде из другого треда мне бывает нужно обновить часть окна CView (именно часть). Как это сделать?

Беда в том, что дефолтное поведение CView для отрисовки предоставляет только метод OnDraw, кот. "хочет" обновлять всю клиентскую часть окна целиком; вызванный внутри него GetUpdateRect возвращает пустой прямоугольник несмотря на то, что я до того делал InvalidateRect.

Похоже, что нужно пользоваться WM_PAINT, но в хелпе сказано, что эту штуку не рекоменуется использовать для CView.

Куды крестьянину податься?
Бесплатный генератор отчетов для программ на C/C++
http://www.oxetta.com
Re: CView: WM_PAINT?
От: OLEGus1 Россия  
Дата: 16.08.02 08:12
Оценка:
Здравствуйте sushko, Вы писали:


S>Похоже, что нужно пользоваться WM_PAINT, но в хелпе сказано, что эту штуку не рекоменуется использовать для CView.


S>Куды крестьянину податься?

Ну и русуй в паинт. OnDraw просто внутри у себя вызывает onPaint
Crescite, nos qui vivimus, multiplicamini
Re[2]: CView: WM_PAINT?
От: Patalog Россия  
Дата: 16.08.02 08:25
Оценка:
Здравствуйте OLEGus1, Вы писали:

S>>Похоже, что нужно пользоваться WM_PAINT, но в хелпе сказано, что эту штуку не рекоменуется использовать для CView.


S>>Куды крестьянину податься?

OLEG>Ну и русуй в паинт. OnDraw просто внутри у себя вызывает onPaint

А не наоборот?

/////////////////////////////////////////////////////////////////////////////
// CView drawing support

void CView::OnPaint()
{
    // standard paint routine
    CPaintDC dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
}
Почетный кавалер ордена Совка.
Re[2]: CView: WM_PAINT?
От: Андрей Россия  
Дата: 16.08.02 08:27
Оценка:
Здравствуйте OLEGus1, Вы писали:

OLEG>Здравствуйте sushko, Вы писали:



S>>Похоже, что нужно пользоваться WM_PAINT, но в хелпе сказано, что эту штуку не рекоменуется использовать для CView.


Используй CDC::GetClipBox(LPRECT lpRect), а не GetUpdateRect, так как вызов BeginPaint() внутри метода OnPaint обнуляет невалидную область


S>>Куды крестьянину податься?

OLEG>Ну и русуй в паинт. OnDraw просто внутри у себя вызывает onPaint

Точнее, наоборот: из OnPaint вызывается OnDraw
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.