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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
15-1157969722
Александр Иванов
2006-09-11 14:15
2006.10.01
Вопрос по XPath


3-1154007138
DelphiLexx
2006-07-27 17:32
2006.10.01
TFibDataSet обмирает OnSetText


10-1122298074
Oleg_
2005-07-25 17:27
2006.10.01
com без регистрации в реестре


2-1158257492
арт
2006-09-14 22:11
2006.10.01
разработка компонента


8-1141476593
Ал
2006-03-04 15:49
2006.10.01
И снова antialiasing