Форум: "Основная";
Текущий архив: 2011.10.23;
Скачать: [xml.tar.bz2];
ВнизКакое сообщение Win при восстановлении формы Найти похожие ветки
← →
POP (2010-03-25 13:44) [0]Минимизацию в ТаскБар ловлю так:
private
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
..
..
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
inherited;
if Msg.CmdType = SC_MINIMIZE then
...
end;
Далее, делаю то что мне нужно.
А вот как поймать обратное действие восстановление из ТаскБара?
Пробовал отслеживать известные сообщения SC_RESTORE, SC_MAXIMIZE.
Не прилетают они почему-то.
← →
Игорь Шевченко © (2010-03-25 13:59) [1]Msg.CmdType and $FFF0
← →
POP (2010-03-25 20:48) [2]
> Игорь Шевченко ©
> Msg.CmdType and $FFF0
Это роли не играет особой, в Delphi я без "and $FFF0" делал для SC_MINIMIZE и все работает.
Провел эксперимент, включил для формы свойство biMaximize, чтобы можно было ее на весь экрна разворачивать и начал ловить мессаги, которыве летят:
1) При сворачивании в ТаскБар прилетает SC_MINIMIZE
2) При разворачивании несвернутого в ТаскБар приложения кнопкой развернуть из меню, придетает SC_MAXIMIZE
3) При свертывании развернутого на весь экран формы, прилетает SC_RESTORE
Все.
Непонятно, что летит к форме, когда ее из ТаскБар восстанавливают. SC_RESTORE и SC_MAXIMIZE точно не летят.
Нужно как-то туда свой обработчик воткнуть.
Может вообще не с WM_SYSCOMMAND тут надо работать, ведь она только к системному меню относиться вообще?
← →
POP (2010-03-25 20:51) [3]Точно, если свернуть форму ткнув на иконку в ТаскБаре, то SC_MINIMIZE не прилетит.
SC_MINIMIZE прилетает только когда свертываешь через системное меню.
Вот засада.
То есть, если тыкать на Таскбаре для свертывания/развертывания формы нужно что-то другое отслеживать.
← →
Игорь Шевченко © (2010-03-25 22:39) [4]
> Это роли не играет особой
Правильно говоришь, не играет. Потому что команда SC_RESTORE посылается не окну твоей формы, а Application.Handle.
Ловить через ApplicationEvents.OnRestore
← →
POP (2010-03-25 23:38) [5]Проблема почти решена.
Самым простым способом оказалось поставить свои обработчики на Application.onRestore и Application.onMinimize, в FormCreate.
Тогда ловятся как системное меню, так и ТаскБар, и никакие сообщения обрабатывать не нужно.
TApplicationEvents - лишняя бандура в проекте.
Не ловится только сворачивание/разворачивание всех окон по хоткею Win+D.
Но я пока с этим не разбирался, надо пошерстить интернет.
← →
Anatoly Podgoretsky © (2010-03-26 07:24) [6]> POP (25.03.2010 23:38:05) [5]
А чего бы этому ловиться, когда нет ни какого сворачивание/разворачивания
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.10.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c