Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отрисовка окна

319
03 марта 2003 года
xelos
577 / / 27.02.2003
есть проблема - может кто поможет?
вобщем контекст такой - программа делает замеры каждую секунду (считывает данные с внешнего порта в соответсвующий массив). Это все надо в реальном времени (т.е. каждую секнду) отбражать в окне. Массив на 15000 элементов. Таймер утснавливается стандартный - виндовый. В процедуре обработки сообщения таймера стоит вызов считывания данных и отправки сообщения WM_PAINT через вызов функции Invalidate(TRUE); В процедуре отрисовки окна OnDraw() происходит отрисовка графика. Проблема в том, что если массив заполнен - надо отрисовать 15000 точек. Графиков может быть несколько (до 10). Что соответственно увеличивает время отрисовки графиков. Нужно уменьшить время отрисовки. Есть решение вызывать Invalidate(FALSE) и дорисовывать каждый раз по одной точке. Тогда возникает проблема при перекрытии окна - стирается часть, которая закрыта. Вопрос можно ли фильтровать стандартно сообщения WM_PAINT - узнать кто вызвал? чтобы при вызове Invalidate() из траймера не стирать фон, который был (чтобы не прорисовывать то, что уже нарисовано), а при всех других WM_PAINT прорисовывать весь массив. Может быть есть стандартная функция, которая вызывается при перекрытии окон?
В настоящий момент я использую логическую переменную, показывающаю было ли сообщение отправленно из таймера. Интересуют _СТАНДАРТНЫЕ_ методы решения.
319
04 марта 2003 года
xelos
577 / / 27.02.2003
Проблему я решил через обработчик WM_ERASEBKGND.

Теперь у меня другая проблема - однооконное приложение, в нем надо повыбору из меню то график рисовать, то колонку цифр печатать. В одной функции OnDraw неохота все это реализовывать (выбор в зависимости от меню рисовать или печатать) - кто может что посоветует?
3.5K
04 марта 2003 года
Sikhaya
7 / / 04.03.2003
Цитата:
Originally posted by xelos
Проблему я решил через обработчик WM_ERASEBKGND.

Теперь у меня другая проблема - однооконное приложение, в нем надо повыбору из меню то график рисовать, то колонку цифр печатать. В одной функции OnDraw неохота все это реализовывать (выбор в зависимости от меню рисовать или печатать) - кто может что посоветует?



Сделай несколько дочерних диалогов, отрисовывай на каждом то что тебе нужно, а показывай только 1

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог