Здравствуйте.
Как создать двойную буферизацию в программе, написанной в Microsoft Visual C++ с использование технологии MFC.
Тип окна: CWnd.
Подскажите, пожалуйста. Я принцип знаю, пока то обрабатывается, нужно обработать то в памяти, вывести на экран, а как реализовать в код, я не знаю.
Мне нужно сделать двойную буферизацию ctoolbar,cwnd,cbutton и т.д.
Somebody help me, please!!!
01.10.09 13:44: Перенесено модератором из 'C/C++' — Кодт
Здравствуйте, VladOfMonster, Вы писали:
VOM>Мне нужно сделать двойную буферизацию ctoolbar,cwnd,cbutton и т.д.
Бррр... Win контролы не рисуются по-фреймово, то есть они просто рисуются в функции OnPaint, когда система (или ты) решили, что изображение на них устарело. Двойная буфферизация нужна в по-фреймовом рисовании. Но для такого рисования GDI не подходит, лучше создай на окне контекст OpenGL и там установи Double Buffering. Ну, а если тебе нужно все-таки изобразить что-то в GDI, чтобы оно мгновенно отобразилось, то создай битмап в памяти, на нем создай контекст, нарисуй, а потом BitBlt на контекст окна. Я думаю, только так.
Здравствуйте, VladOfMonster, Вы писали:
VOM>Здравствуйте. VOM>Как создать двойную буферизацию в программе, написанной в Microsoft Visual C++ с использование технологии MFC. VOM>Тип окна: CWnd. VOM>Подскажите, пожалуйста. Я принцип знаю, пока то обрабатывается, нужно обработать то в памяти, вывести на экран, а как реализовать в код, я не знаю.
VOM>Мне нужно сделать двойную буферизацию ctoolbar,cwnd,cbutton и т.д.
CToolbar оставь в покое, он и сам умеет отрисовываться. CButton тоже. CWnd класс абстрактный, а если у его наследников надо, то как написал Went.
А лучше объясни, что тебе сделать надо. Может, тут не только двойная, но и одиночная не нужна
Здравствуйте, VladOfMonster, Вы писали:
VOM>Здравствуйте. VOM>Как создать двойную буферизацию в программе, написанной в Microsoft Visual C++ с использование технологии MFC. VOM>Тип окна: CWnd.
Здравствуйте, Went, Вы писали:
W>От бликов часто спасает просто правильная (выборочная) инвалидация областей контрола по происходящим событиям.
Это я знаю. Но класс CMemDC, который прилагается к данной статье, как раз и предназначен для реализации той самой двойной буферизации, которой интересуется ТС, и легко может быть повторно использован.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]