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

Вниз

Каково максимально-гарантированное время доставки message?   Найти похожие ветки 

 
Ega23 ©   (2004-01-06 14:29) [0]

Ситуация следующая.

1. Есть некий класс TDialogPanel. Суть его такова, что по собственному языку он строит динамические диалоги с разным набором контролов. Например, в одном случае это 2 TEdit"а, в другом - TEdit, TComboBox и TCheckBox и т.п. По событию OnExit каждого из контролов генерируется собственный message и отправляется по MainForm.Handle.
2. В главной форме в обработчике этого message происходит попытка обращения к отправителю за какой-то информацией.
3. Опять же в главной форме имеется TTreeView, передвигаясь по узлам которого убивается старый объект класса TDialogPanel и создаётся новый.

Какова вероятность того, что в обработчике события я буду обращаться к уже "убитому" объекту класса?


 
Юрий Федоров ©   (2004-01-06 14:39) [1]

Как отравляется сообщение
если SendMessage - вероятность нулевая, так как это аналогично
вызову метода - управление будет передно немедленно

если PostMessage - сообщение встанет в конец очереди сообщений окна и будет отработно только тогда, когда все предыдущие будут отработаны.


 
Ega23 ©   (2004-01-06 14:42) [2]


> если SendMessage - вероятность нулевая, так как это аналогично
> вызову метода - управление будет передно немедленно

Т.е., как я понимаю, сообщение сгенерили через SendMessage, мгновенно провалились в обработчик события, вернулись обратно - и объект "убился", так?


 
Романов Р.В. ©   (2004-01-06 14:44) [3]

Если сообщения посылаешь через SendMessage или Perform, то будет выполнятся обработка сообщений, а потом продолжится выполнение программы со следующей строки.
Если сообщения посылаешь через PostMessage обработка сообщения будет после выхода из процедуры, когда приложеие начнет обрабатывать очередь сообщений. Вероятность обращения к убитому объекту в этом случае очень велика.


 
Романов Р.В. ©   (2004-01-06 14:46) [4]


> вернулись обратно - и объект "убился", так?

Сам он не убъется его убивать нужно. А суть ты понял равильно


 
Ega23 ©   (2004-01-06 14:56) [5]

Хорошо, сейчас попробую. Я через Post делал.
А Event сдесь помочь может?


 
Романов Р.В. ©   (2004-01-06 15:04) [6]

А Event тут причем?
Не путай сообщения с событиями.


 
Ega23 ©   (2004-01-06 15:09) [7]

Всем спасибо за советы, всё замечательно заработало.



Страницы: 1 вся ветка

Текущий архив: 2004.01.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
7-49797
Vitall
2003-11-04 11:27
2004.01.16
Как определить установлен ли у юзера Excel (любой версии)


7-49795
V-Isa
2003-11-04 13:05
2004.01.16
Звуковая карта


1-49563
edicon
2004-01-06 03:07
2004.01.16
Компонент


3-49397
AVP_opck
2003-12-22 09:10
2004.01.16
Не выключается AutoCalcFields


14-49701
Кен
2003-12-26 02:11
2004.01.16
Какую лучше выбрать вэб-камеру для тёмных помещений ? А то на