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

Вниз

Изменение порядка сообщений в очереди   Найти похожие ветки 

 
Григорьев Антон ©   (2004-07-19 16:53) [0]

На форме есть компонент, который должен быть уничтожен сразу, как только он потеряет фокус. Для этого в его обработчике OnExit посылаю сообщение его родителю, при обработке которого тот уничтожает компонент. Естественно, использую PostMessage, потому что SendMessage приведёт к тому, что компонент будет уничтожен до завершения работы его метода, а это AV. В результате при выборе мышью другого компонента получается следующая последовательность обработки сообщений:

1. OnExit моего компонента
2. OnClick другого компонента
3. Сообщение, по которому предок удаляет первый компонент.

Действия обработчика сообщения №2 зависят от того, какие компоненты есть на форме, и мне бы хотелось, чтобы при его обработке первого компонента уже не было. Можно ли третье событие как-то поставить в очередь перед вторым?

P.S. Интерес к этому вопросу у меня больше теоретический, чем практический. Если это нельзя, то я знаю несколько обходных путей. Поэтому прошу не тратить время на объяснение того, как можно разрулить ситуацию при имеющемся порядке обработки событий - это я уже знаю.


 
Digitman ©   (2004-07-19 17:01) [1]

изменить порядок сообщений, уже поставленных в очередь, не удастся

но в обработчике OnClick можно выбрать нужное сообщение с одновременным удалением его из очереди (см. Peekmessage c параметром PM_REMOVE) и тут же его обработать по DispatchMessage()


 
Digitman ©   (2004-07-19 17:18) [2]

что-то вроде

procedure TMyForm.OnClick(..)
begin
..
if PeekMessage(Msg, 0, WM_MYMSG, WM_MYMSG, PM_REMOVE) then
  DispatchMessage(Msg);
...
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.052 c
9-1084531632
AlexRush
2004-05-14 14:47
2004.08.29
Алгоритм -> Фильтрация растра (бликиб шумы)


3-1091822632
Денисыч
2004-08-07 00:03
2004.08.29
Как защищать данные от просмотра ?


1-1092121273
ALS
2004-08-10 11:01
2004.08.29
TListImage и разрешение экрана


3-1091557575
Elast
2004-08-03 22:26
2004.08.29
Проблема с кириллицей


1-1092137241
Pavelkq
2004-08-10 15:27
2004.08.29
Сравнение двух TStringList-ов