Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.035 c
7-1075073038
Slash_from_Ryazan
2004-01-26 02:23
2004.04.04
Как узнать Имя пользователя в Виндовс


7-1074185908
Miau
2004-01-15 19:58
2004.04.04
Типы из DLL


1-1079372833
Chcnger
2004-03-15 20:47
2004.04.04
Ошибка при закрытии


14-1079011996
Х
2004-03-11 16:33
2004.04.04
ORACLE - вожм-но ли восстновление данных?


14-1078828017
}|{yk
2004-03-09 13:26
2004.04.04
Насколько криптостоек такой вариант шифрования?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский