Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, samius, Вы писали:
PD>>>Paint.net так не рисует.
S>>А попробуй нарисовать в нем линию, или прямоугольник
PD>Не понял. Я же только о контуре говорил.
Да, подтверждаю версию Sinix-а. Инверсная граница, а содержимое слегка тонировано.
PD>Что-то у меня не получается посмотреть Spy++ окно paint.net. А другого ничего нет. Попробуй.
А что ты хочешь увидешь?
S>>Чем так страшен WM_PAINT, если есть двойной буфер?
PD>На каждый мышкин чих перерисовывать прямоугольник ?
PD>>>По идее UpdateWindow заставит немедленно перерисовать именно эту линию и снять флаг инвалидности.
S>>А ради чего собственно выжимать такты на ровном месте? Тебя не устраивает скорость BitBlt?
PD>На каждое мышкино передвижение ?
S>>Более того, я даже не уверен, что посылка нескольких InvalidateRect-ов и UpdateWindow будет быстрее BitBlt.
PD>Так InvalidateRect + UpdateWindow и приведут к BitBlt, только на 4 линии. Остально-то зачем перерисовывать ?
Просто что бы не мудрить.
Вот смотри. Сейчас собираю прототип html смотрелки со спецвозможностями (т.е. существующие не устраивают). Для отладки мне удобно выводить некоторую посторонюю информацию о лэйаутинге на то же устройство (координаты мыши, атрибуты узлов, над чьими боксами я тащу мышь, границы боксов, и т.п.).
Сделал в лоб WM_PAINT-ом на каждый мышиный чих. Т.е. не блит, а вся отрисовка всех глифов с доп информацией + блит из двойного буфера (от фликов). Ну и что бы ты думал? Все отлично рисуется, правда немного поджирается процессор. Меня это не беспокоит на столько что бы заниматься экономией перерисовки на уровне пикселов. И пока у меня нет отсечения по страницам. Т.е. на каждый мышиный чих рисуется весь документ, хоть и видна лишь его часть.
Можешь сказать что из-за таких как я тормозит виндовс, но мое мнение — одиночных блитов бояться не нужно в современных интерактивных приложениях.
В более менее сложных и многослойных могут работать и множественные блиты (2 и более буферов).