Выход из OnPaint без создания CPaintDC dc(this);
, Если не создавать в OnPaint CPaintDC dc(this);, то программа вообще перестает правильно работать
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.164] |
|
|
Правила раздела Visual C++ / MFC / WTL (далее Раздела)
FAQ Раздела
Обновления для FAQ Раздела
Поиск по Разделу
MSDN Library Online
Выход из OnPaint без создания CPaintDC dc(this);
, Если не создавать в OnPaint CPaintDC dc(this);, то программа вообще перестает правильно работать
|
Сообщ.
#1
,
|
|
|
|
Есть класс CMyVideo, производный от CWnd. В классе есть функция OnPaint:
![]() ![]() void CMyVideo::OnPaint() { if (wp == NULL) return; CPaintDC dc(this); // device context for painting В просмотре CView, есть несколько объектов класса CMyVideo. Некоторые объекты этого класса не нуждаются в перерисовке, и я после проверки этого факта, сразу выхожу из OnPaint, не создавая CPaintDC dc(this). Я потратил пол ночи, чтобы понять, почему некоторые объекты не перерисовываются! Оказалось, что после первого же выхода без создания CPaintDC dc(this), OnPaint перестает вообще работать во всех других объектах! При этом никаких сообщений не выдается. А если последовательность операторов такая: ![]() ![]() void CMyVideo::OnPaint() { CPaintDC dc(this); // device context for painting if (wp == NULL) return; то все работает правильно. В чем дело? Или я что то делаю не так? |
|
Сообщ.
#2
,
|
|
|
|
Да просто в каком-нибудь деструкторе класса CPaintDC происходят вызовы столь нужных функций BeginPaint да EndPaint!..
|
|
Сообщ.
#3
,
|
|
|
|
Цитата Славян @ Да просто в каком-нибудь деструкторе класса CPaintDC происходят вызовы столь нужных функций BeginPaint да EndPaint!.. ![]() Но ведь речь идет о разных объектах, после первого выхода из OnPaint, перестают работать другие объекты этого класса, почему? При этом объекты других классов работают нормально. |