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

Вниз

про Мессаги   Найти похожие ветки 

 
saska   (2004-03-12 14:04) [0]

День добрый. Не подскажет ли кто, какой WM_... надо отлавливать, когда юзер сворачивает окно кликом на кнопке окна на таскбаре?
Спасибо.


 
clickmaker ©   (2004-03-12 14:09) [1]

WM_SIZE или WM_SYSCOMMAND


 
saska   (2004-03-12 14:13) [2]

пробавал...

if Message.Msg = WM_SYSCOMMAND then begin
   if Message.WParam = SC_MINIMIZE then begin...
- когда сворачиваешь кнопкой в заголовке окна...

if Message.Msg = WM_SIZE then begin
   if Message.WParam = SIZE_MINIMIZED then begin...
- не отрабатывало не разу...


 
RDen   (2004-03-12 14:14) [3]

Попробуйте так:

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Memo1: TMemo;

   procedure FormCreate(Sender: TObject);
   procedure AppMinimize(Sender: TObject);

 private
   { Private declarations }
 public

   { Public declarations }
   
 end;

var
 Form1: TForm1;
 var i:integer;
implementation

{$R *.dfm}

procedure TForm1.AppMinimize(Sender: TObject);
begin
i:=i+1;
 Application.Minimize;
 form1.caption:="Приложение было свёрнуто "+inttostr(i) +" раз";
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  i:=0;
  Application.OnMinimize := AppMinimize;
end;

end.


 
saska   (2004-03-12 14:17) [4]

>RDen
Может быть и выход, но хотелось бы через мессаджи, раз уж начал...)


 
ssk   (2004-03-12 14:33) [5]

>saska [4]

а тебе надо шашечки или чтобы ехало?


 
PVOzerski ©   (2004-03-12 14:35) [6]

Ребятки, а вы уверены, что окошко, представленное на таскбаре, - это окошко главной формы а не отдельное окошко класса tApplication? У меня именно такое подозрение - невзирая на кажущуся абсурдность. Если я прав, можно попробовать следующий финт: написать свой callback wndproc c обработкой WM_SYSCOMMAND и вызовом прежнего callback"a и подсунуть его окошку tApplication через SetWindowLong.


 
saska   (2004-03-12 14:37) [7]

>PVOzerski
Очень даже может быть...


 
PVOzerski ©   (2004-03-12 14:45) [8]

Для D3 подтвердилось :^)

var
OldProc:pointer;
function NewAppWndProc(HWND:tHandle;Msg:cardinal;WPARAM,LPARAM:longint):longint;stdcall;
begin
 if (Msg=WM_SYSCOMMAND)and(WPARAM=SC_MINIMIZE)then
  ShowMessage("Hello world!");
 Result:=CallWindowProc(OldProc,HWND,Msg,wParam,lParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 longint(OldProc):=SetWindowLong(Application.Handle,GWL_WNDPROC,longint(@NewAppWndProc));
end;


 
PVOzerski ©   (2004-03-12 14:48) [9]

И для D6 тоже подтвердилось.



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

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

Наверх




Память: 0.48 MB
Время: 0.057 c
3-1078926195
Vit
2004-03-10 16:43
2004.04.04
Можно ли сделать многострочными ячейки БД


4-1074769454
misha2
2004-01-22 14:04
2004.04.04
Как после перезагрузки показать сообщение пользователю до Logonа


1-1079422455
fika
2004-03-16 10:34
2004.04.04
Unicode


14-1078899215
Manfred
2004-03-10 09:13
2004.04.04
Полный справочник по Win32API.


3-1078739618
Rustamus
2004-03-08 12:53
2004.04.04
Реализация БД