Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.09;
Скачать: CL | DM;

Вниз

Перерисовка окна - её предотвращение   Найти похожие ветки 

 
SaperXL   (2003-04-07 21:42) [0]

Возникла проблема - надо предотвратить перерисовку окна. Проблема заключается в том, что это окно Я отдаю на растерзание MapInfo (географическая информационная система) и она через OLE там рисует (ну точнее, она в это окно встраивает свое окно...). Когда Я хочу нарисовать что-нить на карте Я передаю сообщение MapInfo и она рисует. Но мне надо кучу всего нарисовать а разом нельзя - только дискретно, и каждый раз обновляется окно - некрасиво (заказчик стебёт). Стандартное средство от MapInfo (их даже два) не работает, напонятно, почему. Так вот нельзя ли как нить на API взять HWND и не давать ему обновляться, а потом (когда все выведем) разом отобразить все изменения? Помогите, пожалуйста...


 
DVM ©   (2003-04-07 22:03) [1]

Рисуй на невидимом окне, а потом покажи окно. Или рисуй в память на битмап какой если можно конечно.


 
Иван Шихалев ©   (2003-04-07 22:04) [2]

Могу посоветовать перекрыть прорисовываемое окно топовым с индикатором состояния прорисовки (если окно закрыто другим - оно перерисовываться явно не должно). Хотя это и изврат :)


 
Иван Шихалев ©   (2003-04-07 22:06) [3]

Гм... А ведь действительно, можно и само перерисовываемое окно скрыть... Если это удобно, конечно.


 
SaperXL   (2003-04-08 01:11) [4]

Скрыть? это Visible = false что ль?
Если скрыть - то оно ничего показывать не будет - а надо, чтобы показывало, но старое, а потом, в знаменательный момент раз - и все перерисовалось по новому. А скрывать ещё не могу, потому, что перерисовывать все время приходится и это некрасиво, когда карта "потухает" на секунду - 2... А неужели нельзя приостановить поток сообщений посланных конкретному окну?


 
SaperXL   (2003-04-08 01:15) [5]

А кстатит, с перекрытием, а как нить можно картинку с обного окна на другое перегнать? Тока надо по АПИшному - иначе заказчик вообще уволит... Если подскажете, то может быть перекрывать другим не плохая идея: скопировал содержимое в другое окно его как картинку показал - втихаря обновил картинку и опять показал настоящую карту... Итак, как на АПИ перегнать картинку с одного HWND на другое?


 
Alex Konshin ©   (2003-04-08 04:40) [6]

Попробуй LockWindowUpdate.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/pantdraw_4v8r.asp


 
Иван Шихалев ©   (2003-04-08 08:17) [7]

Перегнать - легко. GetDC, SelectBitmap, BitBlt и так далее. В общем, см. функции работы с Bitmap.


 
NAlexey ©   (2003-04-08 11:02) [8]

Советовали и не раз, MBo много раз говорил, что стараться надо рисовать API StretchBlt, BitBlt, TransparentBlt. Скорость перерисовки увеличивается в порядки. Сам убеждался на личном примере: DrawGrid. В нем, в каждой клетке рисуется картинка, количество ячеек порядка от 200-1000 необходимо менять размеры формы, а соответственно размеры Grid и перерасчитывать кол-во видимых ячеек ну и перерисовывать. До того как переделал на API тормозило просто страшно, все дергалось и т.д. Заменил все Draw на BitBlt и StretchBlt все работает гладко.


 
Diamond Cat ©   (2003-04-08 15:27) [9]

делай изменения на другой форме (невидимой) а в "знаменательный момент" BitBlt на свою, перекрытие перерисовки своего окна череповато, появлением на нем непрорисованных регионов


 
SaperXL   (2003-04-08 22:25) [10]

Ребяты всем спасибо! Проблему разрешило мудрое замечание про LockWindowUpdate.



Страницы: 1 вся ветка

Текущий архив: 2003.06.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
6-26646
Дмитрий К.К.
2003-04-07 11:59
2003.06.09
Поиск файла в Интернете


1-26543
daos
2003-05-25 16:56
2003.06.09
Пмогите нарисовать двоичное дерево!!!!


3-26404
Alexey
2003-05-21 16:31
2003.06.09
Фильтр


7-26823
Some1
2003-03-30 08:38
2003.06.09
Идентификация дискетки


14-26691
_Alex_
2003-05-24 11:01
2003.06.09
Методика рассчета загрязнения атмосферы