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

Вниз

Какое сообщение 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
6-1244481530
Cryxalis
2009-06-08 21:18
2011.10.23
"Исправить" сетевое подключение.


15-1309127349
Германн
2011-06-27 02:29
2011.10.23
Опять WinLock


15-1308941486
xayam
2011-06-24 22:51
2011.10.23
COM-порт: Windows & Embedded Linux


2-1309728612
kingsoft
2011-07-04 01:30
2011.10.23
Помогите разобраться с загрузкой изображения


1-1269838322
Jamix
2010-03-29 08:52
2011.10.23
голосовой модем