![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, кто знает?
boa © (2003-01-27 07:46:00)Какой Messageпосылается приложениям при нажатии на таскбаре кнопки "Свернуть все окна"?
boa (2003-01-28 06:02:00) [1]>KDenis
Если вы имеете ввиду OnMessageто он получает далеко не все сообщения (насколько я знаю там обрабатываются сообщения переданные через PostMessage). А OnMinimizeпри сворачивании всех окон тоже не отробатывает.
KDenis (2003-01-27 19:45:00) [2]а компонент
ApplicationEvents(впервые в Delphi5) получает все сообщения до того, как их получит окно, и сообщение это можно стереть (тоесть, сделать так, чтоб окно его не получило)...
boa (2003-01-27 14:05:00) [3]Да, WM_SIZE - это почти то, что нужно. Проблемка только в том что это сообшение приходит после того, когда форма уже скрыта.
Ну и на этом большое СПАСИБО!
Может чего и выкраю.
Anatoly Podgoretsky (2003-01-27 13:26:00) [4]Игорь Шевченко © (27.01.03 09:43)
Точно и даже всплывающая подсказка называется Show Desktop, остальное на совести переводчика.
boa (2003-01-27 13:07:00) [5]>Игорь Шевченко © (27.01.03 12:56)
Шас попробуем!
Игорь Шевченко (2003-01-27 12:56:00) [6]Окну посылается сообщение WM_SIZE с wParam = SIZE_MINIMIZED
boa (2003-01-27 12:39:00) [7]Я понял что мы друг друга не совсем понимаем.
Попробую пояснить всю проблемму:
Мне нужно знать когда приложение находится в минимизированном состоянии, а когда нет.
Дык вот единственный момент (если он конично единственный) это когда сворачиваются все окна, у меня выпадает из обработки, при чем мне нужно обработать это сообщение до того как скроется окно приложения.
Вот Так.
Игорь Шевченко (2003-01-27 12:21:00) [8]boa © (27.01.03 10:58)
Угу, знает. Но сообщения ему при этом можно и не посылать, достаточно установить стиль WM_MINIMIZE в окне, и строчка "Восстановить" появится в системном меню.
boa (2003-01-27 12:20:00) [9]> DVM
Может в каких то случаях ваше утверждение и имеет место, но в данном случае это стабильный и реальный факт. Кроме того могу утверждать (по крайней мере для WinXP), что при сворачивании всех окон - окна приложения получают сообщение WM_SHOWWINDOW c параметром HIDE, а не просто прячутся за окно рабочего стола.
Так, что состояние окна приложения и меню приложения очень даже соответствуют друг другу.
Ну дык может кто посоветует в каком направлении нужно копать, что бы поймать момент сворачивания всех окон.
DVM (2003-01-27 11:01:00) [10]
> boa
> пункт меню "Восстановить" является доступным
не факт, что так и есть. Неоднократно сталкивался с тем, что системное меню отображает не реальное состояние окна, а вообще неизвестно какое.
boa (2003-01-27 10:58:00) [11]> Игорь Шевченко
Может конечно оно так и есть, однако если открыть системное меню приложения, после того как были свернуты все окна, то в нем пункт меню "Восстановить" является доступным. А это говорит о том, что приложение знает, что оно находится в минимизинованном состояния, и пусть окна физически заслоняются, а получается что приложение об этом уведомляется. В том то и вопрос - как?
Игорь Шевченко (2003-01-27 09:43:00) [12]Внутреннее сообщение Shell"a. Вообще, команда "свернуть все окна" на самом деле устанавливает окно рабочего стола на передний план. Так, что окна не сворачиваются, а заслоняются
boa (2003-01-27 08:36:00) [13]Если вы имеете ввиду WM_MINIMIZE, то такое сообщение даже отсутствует в документации, сообщение о минимизации отправляется через WM_SYSCOMMAND. Но я проверял, при нажатии на "свернуть все окна" WM_SYSCOMMAND не посылается приложению. Посылается сообщение - $C096. А что это за сообщение так и не могу найти.
Anatoly Podgoretsky (2003-01-27 08:06:00) [14]WM_NINIMIZE по видимому