Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > ListCtrl |
Автор: serg405 5.8.2009, 18:40 |
Привет учасникам форума. У меня такая задача, нужно написать свой LictCtrl который стилизируется(цвет текста, настраемый фонт, цвет фона и тд и тп). Сам контрол должен отображать большое количество даных. Я всё ето писал на GDI и у меня была проблема с перерисовкой (никак не мог избавится от мерцания). И так вопрос. Есть ли в DirectX поддержка стандартных контролов Windows. Если да, то можна какието ссылки, как с етим работать. Если нет, как мне ето сделать (какими технологиями). |
Автор: serg405 5.8.2009, 20:44 |
но если использовать BitBlt , код будет использовать много процессорных ресурсов, поскольку обрабативается очень большое количество битов. |
Автор: Cheloveck 5.8.2009, 20:51 |
serg405, ты считаешь, что сможешь сэкономить на дайректикс? Все используют двойную буферезацию, включая стандартные контролы винды. Операция копирования битмапа - это очень простой процесс, не требующий много ресурсов. |
Автор: Alexeis 5.8.2009, 21:12 | ||
Как правило эта операция делается драйвером видеокарты, поэтому выполняется достаточно эффективно. Конечно же FastBlt из DirectDraw затратит раз в 10 меньше ресурсов, но все таки тут не кино где 25 кадров в секунду. Обычно BitBlt хватает на весьма средненькой машине. На компах выпущенных до 2000 года, действительно могут быть быть проблемы с ресурсами на такого рода задачах. Кстати еще вариант, сделать форму полупрозрачной с коэффициентом полупрозрачности 255, т.е. непрозрачной, тогда включиться виндовая двойная буферизация, но это будет тормознее чем свой bitblt. |
Автор: Mad 7.8.2009, 17:23 | ||
кроме оработки WM_PAINT надо еще перехатывать WM_ERASEBKGND и WM_NOTIFY (во многих случаях достаточно обрабатывать только WM_NOTIFY), тогда можно решить проблему с мерцанием, + в коде обработки сообщений надо анализировать РЕГИОН ОБНОВЛЕНИЯ (функция GetUpdateRgn), это повысит производительность. |