Форум: "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