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

Вниз

Но не могу поймать момент когда форма уже минимизирована   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.049 c
14-1105789941
Ilya___
2005-01-15 14:52
2005.02.06
ошибка: Invalid variant operation. >


1-1106642331
Толстый
2005-01-25 11:38
2005.02.06
Stringgrid


6-1101283152
Донской
2004-11-24 10:59
2005.02.06
соединение с mail.ru


4-1103012818
ПЛОВ
2004-12-14 11:26
2005.02.06
CreateProcessWithLogonW


1-1106289423
NewDelpher
2005-01-21 09:37
2005.02.06
как найти причину AV в vcl50.bpl?