Здраствуйте, Необходимо в одном окне постоянно рисовать два графика.Причем прорисовка должна быть не зависимой.Тоесть интерфейс такой:две фунции draw1(data),draw2(data). Как разделить эти функции я не знаю.Для двух отдельных окон сначала wglMakeCurrent ставим dc одного окна затем другого.А вот в одном окне не понятно как получить из одного dc два независимых. Есть вариант с GetDcEx но там регион задается в абсолютных координатах, как тогда при ресайзе из пересчитать? С ViewPort тоже не выйдет наверно.Чтоб перерисовать один график надо перерисовывать все окно.
Не правильно (не полно) сформулирован вопрос. Естественно, надо перерисовывать все окно. И кто мешает в перерисовке вывести оба графика? Если они пересчитаны на один масштаб, выводите 1, потом второй - вначале все наобходимые операции с матрицами, потом чисто вывод точек. да, проблемы могут быть, если у графиков разные масштабы, а исходный код функций draw1-draw2 недоступен. Но об этом вы ничего не сказали Навскидку: выводите 1 график так, как надо. Копируете окно в битмап. Меняете масштабы, поворачиваете если надо (может там 3Д-графики?), естественно очищая viewport. Берете сохраненный битмап подложкой, и поверх него выводите 2-й график. И так при каждой перерисовке окна.
>>Не правильно (не полно) сформулирован вопрос. Да я совсеми не так изложил проблему >>Естественно, надо перерисовывать все окно. И кто мешает в перерисовке вывести оба графика? Я разрабатываю dll которая собственно должна заниматся рисованием графиков.Эту dll грузит пользовательское приложение и dll предоставляет интерфейс с помощью которого пользователь может создать окно разделить его на несколько частей в каждом из котом потом рисовать графики функцией draw(id,data).Собственно id это идентификатор графика.А график может быть в отдельном окне или занимать часть окна если в том окне рисуем несколько графиков. У меня проблема с архитектурой программы. Есть обьект render у которого есть хранилище где лежат данные.По методу draw render нарисует в заданный DC данные(wglMakeCurrent).Тоесть у меня render привязан к DC.Еще render требует размеры клиентской области окна по которой выставляем порт просмотра.Я подумал а можно ли как-то привязаться только к DC?И получить размеры клиентской области только зная DC.Тоесть если я использую часть окна скажем я знаю ее процентное соотношение то получив ее DC, обьект render может рисовать в нее и получать размеры только из DC.Чтоб не заморачиваться с GetClientRect.Тоесть render абстрагирован от окон. Вобщем бред я тут понаписал.Я слабо представляю себе что такое dc на уровне операционной системы. ЗЫЖ А с перерисовкой я так придумал:функция draw только перезаписывает data для какогото обьекта render и выставляет event. dll создает внутренний поток который обрабатывает сообщания и события. По WM_PAINT событию вызывает метод draw обьекта renderer. Тоже самое по событию event.