Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизНо не могу поймать момент когда форма уже минимизирована Найти похожие ветки
← →
Delphi5.01 © (2004-12-15 15:11) [0]Проблема заключается в том что я не могу поймать момент деактивизации формы.
Получается только если использую следующий код:
if (Msg.message<>45057)and(Msg.wParam=1)and(Msg.lParam=0) then
Application.Minimize;
Но не могу поймать момент когда форма уже минимизирована. Что бы сделать скриншот экрана.
← →
DVM © (2004-12-15 15:53) [1]WM_WINDOWPOSCHANGED, WM_MOVE, WM_SIZE
← →
Delphi5.01 © (2004-12-15 16:10) [2]Я ни совсем хорошо понял что подразумевается под вашим ответом, я понял что с помощью WM_WINDOWPOSCHANGED происходит минимизация программы. Но чему равны в данный момент: lparam и wparam?
И вы уверены что это сообщение возникает после того как форма уже минимизирована или этот процесс идентичен Application.OnMinimize?
Я попытался использовать Application.OnRestore но результат плачевный, он не подходит по той причине что он возникает уже после востановленя формы.
← →
DVM © (2004-12-15 16:21) [3]
> я понял что с помощью WM_WINDOWPOSCHANGED происходит минимизация
> программы.
Все эти три сообщения - уведомления, они присылаются окну при изменении его положения и размеров. И при минимизации они присылаются.
> И вы уверены что это сообщение возникает после того как
> форма уже минимизирована или этот процесс идентичен Application.OnMinimize?
После. Насчет идентичности смотреть VCL надо не знаю.
> Я попытался использовать Application.OnRestore но результат
> плачевный, он не подходит по той причине что он возникает
> уже после востановленя формы.
И правильно что после. Так и должно быть.
Еще WM_GETMINMAXINFO точно приходит окну в момент перед восстановлением.
← →
DVM © (2004-12-15 16:22) [4]А вообще есть такой хороший инструмент SPY++ c его помощью можно посмотреть какие сообщения и когда приходят окну.
← →
Delphi5.01 © (2004-12-15 21:30) [5]A gde mojno dostat dannuiu utilitu? Esli ne slojno skinte url ochen budu blagodaren! :-)
← →
Delphi5.01 © (2004-12-16 09:43) [6]Не сочтите за наглость или лень, но мне не совсем понятно как можно использовать константу WM_GETMINMAXINFO для определения момента восстановления окна? Понятно что надо отлавливать сообщения Application.OnMessage но как быть дальше? Может надо сравнить значение переменной Msg.Message со значением WM_GETMINMAXINFO?
Спасибо за помощь
← →
DVM © (2004-12-16 10:11) [7]
> 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 13:36) [8]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
← →
Delphi5.01 © (2004-12-16 15:20) [9]Вот неожиданно пришла такая мысль, а что если сделать две формы. Одну засунуть в трей и ее использовать в целях восстановления и минимизации главной формы. В этом случае я смогу сам отлавливать момент восстановления, потому что я же буду давать команды show, hide?
Что вы думаете?
← →
Delphi5.01 © (2004-12-16 16:19) [10]Vso zarabotalo! kak ia i govoril prosto rpogramu minimiziroval v tray, a v etom sluchae ia kontorliroval situaciu :-)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c