Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
Григорьев Антон ©   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.039 c
1-1092296452
V l a d i m i r
2004-08-12 11:40
2004.08.29
Как определить конец документа?


11-1079975222
DillerXX
2004-03-22 20:07
2004.08.29
Power


4-1090241608
Григорьев Антон
2004-07-19 16:53
2004.08.29
Изменение порядка сообщений в очереди


3-1091771457
Shtukos
2004-08-06 09:50
2004.08.29
Как побороть ошибку при исполнении запроса?


1-1092306192
Lera
2004-08-12 14:23
2004.08.29
Формы.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский