![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Но не могу поймать момент когда форма уже минимизирована
Delphi5.01 © (2004-12-15 15:11:00)Проблема заключается в том что я не могу поймать момент деактивизации формы.
Получается только если использую следующий код:
if (Msg.message<>45057)and(Msg.wParam=1)and(Msg.lParam=0) then
Application.Minimize;
Но не могу поймать момент когда форма уже минимизирована. Что бы сделать скриншот экрана.
Delphi5.01 (2004-12-16 16:19:00) [1]Vso zarabotalo! kak ia i govoril prosto rpogramu minimiziroval v tray, a v etom sluchae ia kontorliroval situaciu :-)
Delphi5.01 (2004-12-16 15:20:00) [2]Вот неожиданно пришла такая мысль, а что если сделать две формы. Одну засунуть в трей и ее использовать в целях восстановления и минимизации главной формы. В этом случае я смогу сам отлавливать момент восстановления, потому что я же буду давать команды show, hide?
Что вы думаете?
Delphi5.01 (2004-12-16 13:36:00) [3]Dokumentacia deistvitelno super, no vot soobshenie WM_GETMINMAXINFO ne voznikaet pered RESTORE-om. Toje samoe mogu skazat pro WM_WINDOWPOSCHANGED.
Ili ia chtoto ne pravilno delau?
...
procedure FormRestore(var Msg: TMessage); message WM_GETMINMAXINFO;
...
procedure TForm1.FormRestore;
begin
if ScreenBitMap<>nil then
PrintScreen(ScreenBitMap);
inherited;
end;
Spasibo za pomosh
DVM (2004-12-16 10:11:00) [4]
> Esli ne slojno skinte url ochen budu blagodaren! :-)
www.microsoft.com :) Она входит в состав MS Visual C++ 6
> Не сочтите за наглость или лень, но мне не совсем понятно
> как можно использовать константу WM_GETMINMAXINFO для определения
> момента восстановления окна?
Имеется ввиду "как обрабатывать сообщение Windows для которого не сопоставлено событие Delphi?"
http://www.inet-life.net/delphi/sobit.html
Начиная с "Обработка сообщений Windows в Delphi"
Delphi5.01 (2004-12-16 09:43:00) [5]Не сочтите за наглость или лень, но мне не совсем понятно как можно использовать константу WM_GETMINMAXINFO для определения момента восстановления окна? Понятно что надо отлавливать сообщения Application.OnMessage но как быть дальше? Может надо сравнить значение переменной Msg.Message со значением WM_GETMINMAXINFO?
Спасибо за помощь
Delphi5.01 (2004-12-15 21:30:00) [6]A gde mojno dostat dannuiu utilitu? Esli ne slojno skinte url ochen budu blagodaren! :-)
DVM (2004-12-15 16:22:00) [7]А вообще есть такой хороший инструмент SPY++ c его помощью можно посмотреть какие сообщения и когда приходят окну.
DVM (2004-12-15 16:21:00) [8]
> я понял что с помощью WM_WINDOWPOSCHANGED происходит минимизация
> программы.
Все эти три сообщения - уведомления, они присылаются окну при изменении его положения и размеров. И при минимизации они присылаются.
> И вы уверены что это сообщение возникает после того как
> форма уже минимизирована или этот процесс идентичен Application.OnMinimize?
После. Насчет идентичности смотреть VCL надо не знаю.
> Я попытался использовать Application.OnRestore но результат
> плачевный, он не подходит по той причине что он возникает
> уже после востановленя формы.
И правильно что после. Так и должно быть.
Еще WM_GETMINMAXINFO точно приходит окну в момент перед восстановлением.
Delphi5.01 (2004-12-15 16:10:00) [9]Я ни совсем хорошо понял что подразумевается под вашим ответом, я понял что с помощью WM_WINDOWPOSCHANGED происходит минимизация программы. Но чему равны в данный момент: lparam и wparam?
И вы уверены что это сообщение возникает после того как форма уже минимизирована или этот процесс идентичен Application.OnMinimize?
Я попытался использовать Application.OnRestore но результат плачевный, он не подходит по той причине что он возникает уже после востановленя формы.
DVM (2004-12-15 15:53:00) [10]WM_WINDOWPOSCHANGED, WM_MOVE, WM_SIZE