Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Вниз

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

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

Форум: "WinAPI";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.048 c
2-1196481525
San1712
2007-12-01 06:58
2007.12.23
Возникает сообщение об ошибке как его обработать ?


15-1195850489
syte_ser78
2007-11-23 23:41
2007.12.23
windows 1.01


1-1190371668
REA
2007-09-21 14:47
2007.12.23
Фрейм мелькает


15-1195569942
Stanislav_
2007-11-20 17:45
2007.12.23
Админу


1-1191582712
Checkmate-maker
2007-10-05 15:11
2007.12.23
Обмен данными между процессами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский