Форум: "WinAPI";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизПерерисовка окна - её предотвращение Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c