Главная страница
    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.049 c
15-1196087452
DVM
2007-11-26 17:30
2007.12.23
Глюк с дизайнером меню в Delphi 2007. Это только у меня? Или нет?


15-1195584790
lookin
2007-11-20 21:53
2007.12.23
Песня хорошая


2-1195849433
ton
2007-11-23 23:23
2007.12.23
как создать модуль объекта с возможностью выбора его параметров


2-1196497132
Pacific
2007-12-01 11:18
2007.12.23
Ошибка


15-1195764332
Mul
2007-11-22 23:45
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский