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

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



Память: 0.45 MB
Время: 0.021 c
14-1091985919
AlexG
2004-08-08 21:25
2004.08.29
Говорят, технология ActiveX устарела


3-1091446684
sergch
2004-08-02 15:38
2004.08.29
Ошибка при подключении к SQL Server через ADO


1-1092160559
4МО
2004-08-10 21:55
2004.08.29
Реестр


14-1092296447
syte_ser78
2004-08-12 11:40
2004.08.29
помогите с проблемкой. Подскажите утилитку


14-1092019425
BorisMor
2004-08-09 06:43
2004.08.29
Про сисадминов




   Наверх