Главная страница
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.583 c
15-1157833274
Andryk
2006-09-10 00:21
2006.10.01
Кто нибудь пользовался глянцевыми TFT мониторами?....


8-1111069004
Slawan
2005-03-17 17:16
2006.10.01
Текстовая информация в JPEG...


4-1148436426
not ZX
2006-05-24 06:07
2006.10.01
msocommandbardock


15-1157752849
Tar[OFF]
2006-09-09 02:00
2006.10.01
Web Programming


15-1158064876
Некто
2006-09-12 16:41
2006.10.01
А у нас тут взрыв в соседнем доме.... сидим, боимся....