Главная страница
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.021 c
14-26783
volodya_
2003-05-23 09:59
2003.06.09
Свой компилятор


1-26584
baracuda
2003-05-28 15:06
2003.06.09
запись в файл


3-26391
Erden
2003-05-21 15:02
2003.06.09
IBQuery


3-26348
kanat
2003-05-20 13:59
2003.06.09
конвертировать в parabox7


1-26463
Junior
2003-05-29 10:03
2003.06.09
Вопрос про *.dcu