Главная страница
    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.012 c
1-1156164222
amber55
2006-08-21 16:43
2006.10.01
Как получить сообщение о доставке через почтовый клиент outlook?


15-1157952168
Ega23
2006-09-11 09:22
2006.10.01
С Днём рождения! 11 сентября


15-1157989615
Cyrax
2006-09-11 19:46
2006.10.01
Тонкости языка C++


15-1157125721
real
2006-09-01 19:48
2006.10.01
Генератор афоризмов - существует такое?


15-1157842793
Дед Маздай
2006-09-10 02:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский