| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Блики при скроллинге |
| Автор: torero 3.9.2007, 18:19 | ||
У меня "вид" на основе CView, но в этот "вид" вложено ещё одно окно:
CClientDC dc(pViv); А, чтобы при скроллинге не было мерцаний, хотел использовать метод: OnEraseBkgnd(CDC* pDC); return TRUE; Но pDC относится к клиентской области "вида". А окно pViv уже не клиентская область. Можно ли использовать OnEraseBkgnd для неклиентского окна? Сам скроллинг я делаю так: 1. Меняю начало координат x0 и y0 и вызываю метод dc.SetWindowOrg(x0,y0); 2. Закрашиваю окно dc.FillSolidRect(rect,pDoc->m_BGColor ); 3. Вывожу информацию снова. Может быть здесь что-то изменить? В тех "видах", которые сделаны на основе класса CScrollView нет мерцания, как это сделано? |
| Автор: Lazin 3.9.2007, 19:40 | ||
это двойная буферизация, сначало нужно рисовать в буфер а потом на экран |
| Автор: torero 4.9.2007, 03:38 |
| Lazin, непонятно. Что такое буфер? Если это переменные: int,CString и т. д. то они уже есть. Какая здесь технология? |
| Автор: Lazin 4.9.2007, 07:49 |
| Мерцание происходит из за того что сразу рисуешь в окне. Двойная буферизация - это когда создаешь нужное изображение в памяти, а потом рисуешь его в окне. |
| Автор: torero 4.9.2007, 18:03 |
| А как создать изображение в памяти? В CMemFile записать или ещё как? |
| Автор: _hunter 4.9.2007, 18:17 |
| http://forum.vingrad.ru/forum/topic-168084.html |
| Автор: torero 6.9.2007, 17:57 |
| Спасибо за советы, разобрался и сделал свой пример. Работает. Но при скроллинге перемещение происходит с большим запаздыванием. И даже, когда закрываю программу (по Exit), то закрывается она в течении семи секунд. Отчего это может быть? |
| Автор: zkv 6.9.2007, 18:02 |
вероятно, что-то неправильно сделал. |