Главная страница
    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.034 c
3-1078931074
Voland2000
2004-03-10 18:04
2004.04.04
DBGrid


3-1078396804
HeoGtan
2004-03-04 13:40
2004.04.04
СУБД MySQL (4.0.13)


7-1074492835
Dmitriy_G
2004-01-19 09:13
2004.04.04
Как мне проверить наличие сигнала CTS, в COM


3-1078471446
HeoGtan
2004-03-05 10:24
2004.04.04
PARADOX - через АДО...


1-1079674479
эд
2004-03-19 08:34
2004.04.04
как колонку stringgrid сделать невидимой?





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