Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
7-49777
xghost
2003-11-04 09:41
2004.01.16
Проблема с hook


11-49475
Bystander
2003-05-03 13:49
2004.01.16
Scroll Bar & KOL


14-49748
AlexHermit
2003-12-24 12:29
2004.01.16
Взаимодействие классов


4-49815
Alekc
2003-11-11 00:54
2004.01.16
Как проверить состояние Pipe ?..


1-49518
Хомячок
2003-12-30 11:04
2004.01.16
Вырубаем строку(по-хорошему)...




   Наверх