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

Вниз

Поймать минимизацию окна.   Найти похожие ветки 

 
OnMinimize   (2007-06-06 13:08) [0]

Как поймать момент минимизации окна?

Если она осуществляется через WM_SYSCOMMAND + SC_MINIMIZE, то всё понятно.
А если, например, через ShowWindow или SetWindowPlacement ?
Кто нибудь знает простой способ?


 
DVM ©   (2007-06-06 13:12) [1]


> Кто нибудь знает простой способ?

Чужого окна или своего?


 
OnMinimize   (2007-06-06 13:22) [2]

Окно своё.
А гасят его со стороны (например, через иконку Show Desktop на Taskbar"е).


 
DVM ©   (2007-06-06 13:28) [3]

Раз свое, то вот и лови WM_WINDOWPOSCHANGING и иже с ним сообщения.

P.S. иконку Show Desktop двигает десктоп наверх


 
OnMinimize   (2007-06-06 13:31) [4]

Точно, про WM_WINDOWPOSCHANGING протупил!!!
Поленился подольше в MSDN"е порыться.
Спасибо.


 
OnMinimize   (2007-06-06 14:50) [5]

Тогда, правда, возникает другой вопрос: как поймать нажатие Show Desktop?
Ни WM_WINDOWPOSCHANGING, ни WM_SIZE не возникают.
Так понимаю, здесь работает или Shell.MinimizeAll(), или IShellDispatch4.ToggleDesktop().
Можно ли как-то поймать соответствующие Shell notifications? И вообще, существуют ли они?


 
clickmaker ©   (2007-06-06 15:21) [6]

а WM_WINDOWPOSCHANGED ?


 
OnMinimize   (2007-06-06 16:00) [7]


> clickmaker ©   (06.06.07 15:21) [6]
> а WM_WINDOWPOSCHANGED ?


Нет.


 
DVM ©   (2007-06-06 16:10) [8]


> OnMinimize   (06.06.07 14:50) [5]
> Тогда, правда, возникает другой вопрос: как поймать нажатие
> Show Desktop?
> Ни WM_WINDOWPOSCHANGING, ни WM_SIZE не возникают.

Возникают


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
   procedure PosChanging( var Mess : TMessage ); message WM_WINDOWPOSCHANGING;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PosChanging( var Mess : TMessage );
begin
 WINDOWS.Beep(500,50);
end;

end.


 
clickmaker ©   (2007-06-06 16:14) [9]

запусти трассировщик сообщений в spy++ или winsigth да посмотри, что окну сваливается, когда десктоп раскрываешь


 
OnMinimize   (2007-06-06 16:32) [10]

:-) Ситуация немного хитрее.
Программа не использует VCL (i.e., WinAPI).
У основного окна удален ToolBar button через  SetWindowLong(Main_HWND, GWL_HWNDPARENT, CreateWindowEx(WS_EX_TOOLWINDOW, ...
И вот в этом случае при Show Desktop WM-сообщения не возникают...

Всем спасибо. Теперь ясно куда копать (toolwindow).


 
DVM ©   (2007-06-06 16:41) [11]


> OnMinimize  

У тебя не получится оставить свое окно на экране, кода происходит показ рабочего стола. И обработкой сообщений приходящих к окну тут не обойдешься. Дело в том, что скрываются окна даже зависших приложений.


 
OnMinimize   (2007-06-06 17:25) [12]

Ну "на нэт и суда нэт". :-)
Его можно попытаться переоткрыть.
Ладно, "будем посмотреть"...
Спасибо. :-)



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.018 c
15-1195808646
Ega23
2007-11-23 12:04
2007.12.23
Где сейчас можно купиь 5 лицензий на


15-1195763722
dFedor
2007-11-22 23:35
2007.12.23
Поделитесь материалами


15-1195735621
Bruther
2007-11-22 15:47
2007.12.23
Как сделать чтобы программа работала


2-1196208395
Кевларвестов Семен
2007-11-28 03:06
2007.12.23
Чтение данных с поврежденного CD


8-1162976057
Kortes
2006-11-08 11:54
2007.12.23
Увеличение в Image