Как в Lazarus отловить сообщение WM_SYSCOMMAND (или LM_SYSCOMMAND)?
Если создать процедуру вида:
- Код: Выделить всё
procedure WMSysCommand (var Msg: TWMSysCommand); message WM_SYSCOMMAND;
сообщение не ловится.
Некоторые другие сообщения (н-р WM_SIZE) перехватываются без проблем.
На багтрекере нашел такую же тему (http://bugs.freepascal.org/view.php?id=13442) - насколько я понял, проблема решена.
Скачиваю прикрепленный пример, компилирую его - сообщение не ловится
Перехват сообщения WM_SYSCOMMAND необходим для того, чтобы отловить событие максимизации окна, отменить, собственно, максимизацию, и задать окну некоторые определенные размеры.
Согласно MSDN (http://msdn.microsoft.com/en-us/library/aa926857.aspx), сообщение WM_SIZE посылается после того, как размер окна изменится, поэтому его перехват не подходит.
Если перехват сообщения невозможен, подскажите, пожалуйста, как отловить максимизацию окна другими способами?
Версия Lazarus: 0.9.28.2 бета от 2009-10-25
Версия FPC: 2.2.4
Ревизия SVN: 22279
i386-win32-win32/win64
ОС: Windows 7 Максимальная 64-разрядная