Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с перерисовкой
Форум программистов > Системное программирование > C, С++ и С Builder > MS Visual C++
Young Programmer
В общем проблема в следующем: приложение диалоговое, используется MFC в опеределенной области окна рисуется много прямоугольников с помощью объекта класса CPaintDC.
Если на этот прямоугольник залазит другая форма, или приложение сворачивается и восстанавливается то прямоугольник исчезает. Подскажите пожалуйста, как зафиксировать нарисованное чтобы оно не исчезало??
Прямоугольники рисуются не в OnPaint(), а в обработчике нажатия кнопки. Может есть какая функция?
grigsoft
Надо просто понять что происходит - ты рисуешь, потом окно затирается, вызывается OnPaint, в которым ты ничего не делаешь, и вуаля - мы имеем чистое окно. Соотвественно чтобы это исправить, нажатие кнопки должно лишь изменять состояние отрисовываемого объекта (листа со списком прямоугольников), а OnPaint должен все это отображать.
Young Programmer
Ну да, процесс "вуаля - мы имеем чистое окно" я понимаю smile.gif Действительно, есть массив со списком прямоугольников, т.е. Вы предлагаете по нажатию кнопки редактировать каждый прямоугольник в массиве как нужно, а затем вызывать OnPaint() где они будут отрисовываться? Я правильно понимаю? Просто об этом я задумывался, но не хотелось уже готовое приложение менять (не работает только отрисовка), думал может есть функция которая запрещает перерисовывать определенную область при сворачивании изменении размеров и т.д. Вроде краем уха слышал, что такая есть, но это был очень маленький край уха и где искать подобную функция даже не представляю smile.gif Но спасибо хоть за какой совет!! Если вдруг никто ничего больше не предложит, наверно придеться переделывать.
grigsoft
Функции такие есть, например LockWindowUpdate, но делают они совсем не то, что ты хочешь. Есть и альтернативные пути, например после рисования снять копию в битмап, и в OnPaint этот битмап отрисовывать, но все это - костыли, поддержка и отладка которых займет больше времени чем переписывание.
Dimmuborgir
Цитата
но все это - костыли, поддержка и отладка которых займет больше времени чем переписывание.
На самом деле это не так трудно как кажется. В одной из тем я уже выкладывал код, преимущества - исчезает дрожжь при перерисовании.
Young Programmer
Кстати да, перерисовать в битмап было бы неплохо, но уже поздно, тупо перенес часть кода в OnPaint(). Всем спасибо за полезные советы!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.