Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Вниз
про Мессаги Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c