Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Вниз

Отрисовка Формы   Найти похожие ветки 

 
Mechanic   (2006-08-18 11:26) [0]

Как узнать, отрисовала ли форма себя или нет? При этом вешаться на событие OnPaint нельзя.


 
Ketmar ©   (2006-08-18 11:27) [1]

хм. а зачем?


 
Mechanic   (2006-08-18 11:31) [2]

Я рисую свой объект на FormCreate, а затем при помощи BitBlt сохраняю его вид в память. Так у меня получается схватить вид, того окна, которое лежит под моим, потому что мое еще не отрисовалось.


 
Ketmar ©   (2006-08-18 11:34) [3]

вопрос номер следующий: зачем так делать? это неверно. представь, что часть твоего окна по-любому перекрывается другим, которое "always on top". много ты наскриншотишь.


 
Mechanic   (2006-08-18 11:38) [4]

Блин. Верно!
Но это я смогу обойти.
Главное мне сейчас не скриншотить, пока мое окно не нарисовано.


 
zamtmn ©   (2006-08-18 11:48) [5]

>>Я рисую свой объект на FormCreate, а затем при помощи BitBlt сохраняю его вид в память.
дак ты его сразу в память рисуй, а потом выводи на форму


 
Ketmar ©   (2006-08-18 11:49) [6]

пошли из OnShow WM_USER какой-нибудь. он придёт после того, как всё нарисуется, афаир.


 
Mechanic   (2006-08-18 11:51) [7]

Ребята, всем спасибо. Сам разобрался. Я вызывал своему объекту принудительно Paint на FormCreate. Paint заменил на Invalidate и все пошло.


 
Ketmar ©   (2006-08-18 11:54) [8]

> [7] Mechanic   (18.08.06 11:51)
а это ещё зачем??? всё, что делает Invalidate() -- это говорит винде, что надо бы WM_PAINT послать. который и так уже сидит в очереди, потому что посылается при показе окна.


 
Mechanic   (2006-08-18 11:59) [9]

У меня несколько сложнее, чем было сказано. при старте формы происходит загрузка данных в мой объект. Также загрузка может произойти и в последующие моменты работы программы, при этом объект немедленно должен себя перерисовать. Вот на загрузке у меня и висел вызов Paint.
Ketmar, большое спасибо за "Always on top".


 
Ketmar ©   (2006-08-18 12:03) [10]

> [9] Mechanic   (18.08.06 11:59)
не надо звать Paint(). надо звать или Invalidate(), или Update().
а выставление своего окна поверх всех тоже не универсальное решение. %-)


 
Mechanic   (2006-08-18 12:07) [11]

Да я и не выставляю поверх всех, я только лишь убрал вызов изображения из буфера в случае перекрывания другим окном, пускай мой заново отрисовывается.


 
Ketmar ©   (2006-08-18 13:03) [12]

> [11] Mechanic   (18.08.06 12:07)
бр-р-р. так ты таким образом кэшируешь? ужос. PaintTo() не спасает ОРД?



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

Форум: "Основная";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.019 c
1-1156142299
DelphiLexx
2006-08-21 10:38
2006.10.01
Получить правильные размеры формы


8-1141700996
Максиммм
2006-03-07 06:09
2006.10.01
Скрыть курсор


2-1157709922
Urvin
2006-09-08 14:05
2006.10.01
Отправить запрос на сервер


15-1158038544
Michael5
2006-09-12 09:22
2006.10.01
При загрузке WinXP на этапе ввода пароля пользователя


15-1157988739
Дураг
2006-09-11 19:32
2006.10.01
Два “тяжелых” вопроса на сегодняшнем кандминимуме.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский