Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Когда отправлять сообщения контролам |
Автор: safright 15.8.2008, 23:52 | ||
Столкнулся с ситуацией - нужно посылать сообщения оконным элементам, но! В Create это делать нельзя - нету дескриптора; делать это, например, в при обработке WM_PAINT - неудобно, ибо тормозит сильно, да и зачем одно и то же сообщение отправлять много раз, если одного достаточно?.. пока все, до чего я додумался:
|
Автор: BaD_SeCt0R 16.8.2008, 15:36 | ||
Не пробовал в OnShow? Например:
|
Автор: safright 16.8.2008, 18:55 |
Э, врядли - OnShow вызывается, если форма была Hide, что немного опасно: 1. не факт, что в Create не прописано FShow:=true, т.е. что Show вообще при создании взываться не будет; 2. это событие связано с показом/прятаньем окна, а мне нужна секция инициализации, т.к. это сообщение, если я правильно понял, просто изменяет значение цвета кисти... Идеальный вариант - если окно посылает родителю message "я создался и получил дескриптор"... Тады его перехватить и в кусты! ![]() |
Автор: BaD_SeCt0R 17.8.2008, 00:30 |
Дык если окно не покажется, прогресбар вроде как и тоже ![]() |
Автор: safright 17.8.2008, 10:51 |
Ладно, наверн я неправильно объясняю... Я изменил обработку WM_PAINT (т.е. inherited+что-то свое), но думал, что необходимо все это еще и инициализировать. В общем - бага была в том, что все property компонента выставляются автоматом, при его создании(если они, конечно, указаны в редкторе свойств). Иными словами - я слишком перестраховался... Но эт только в данном случае. З.Ы. все еще вопрос - есть событие типа HANDLECREATED (или как-то так)? |
Автор: BaD_SeCt0R 17.8.2008, 11:31 | ||
перепиши конструктор |
Автор: safright 17.8.2008, 16:46 |
![]() В конструкторе дескриптор окна получить невозможно, собственно - откуда и ноги у вопроса растут ![]() |