Главная страница
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.044 c
2-1157703974
P2P
2006-09-08 12:26
2006.10.01
Помогите перевести конструкцию с C++


2-1158064054
Juri
2006-09-12 16:27
2006.10.01
работа с Memo


1-1156182035
TTreeView
2006-08-21 21:40
2006.10.01
Олег


1-1155977843
Strech
2006-08-19 12:57
2006.10.01
Активная форма


15-1157875212
Marser
2006-09-10 12:00
2006.10.01
Почище Вильгельма Теля...