Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Вниз

минимизация формы   Найти похожие ветки 

 
Lera   (2006-03-24 11:03) [0]

скажите пож-та, какое сообщение windows ловит сворачивание формы


 
Сергей М. ©   (2006-03-24 11:24) [1]


> какое сообщение windows ловит сворачивание формы


Windows ничего не "ловит".
Windows посылает это сообщение, а уж "ловит"-то его приложение, работающее под управлением Windows.

см., например, справку по WM_SIZE


 
balepa ©   (2006-03-24 11:26) [2]

> Lera   (24.03.06 11:03)  
> скажите пож-та, какое сообщение windows ловит сворачивание
> формы


???????????????
Если надо свернуть то,
SendMessage(hwnd,SW_MINIMIZE,0,0)
или
CloseWindow(Wnd: HWnd);


 
TUser ©   (2006-03-24 11:33) [3]

wm_syscommand


 
Lera   (2006-03-24 11:42) [4]

в процедуру при сообщении WM_SIZE программа попадает перед появлением формы, а при сворачивании не попадает....каково всетаки сообщение при сворачивании?


 
Lera   (2006-03-24 11:47) [5]

имеется ввиду сворачивание по значку "-" в правом углу формы


 
balepa ©   (2006-03-24 11:54) [6]

Окну посылается сообщение WM_SIZE с wParam = SIZE_MINIMIZED


 
Lera   (2006-03-24 11:58) [7]

скажи пож-та, а как учесть этот параметр в процедуре?


 
Lera   (2006-03-24 12:23) [8]

не мог бы ты дать код, плиз


 
Kolan ©   (2006-03-24 13:06) [9]

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

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   procedure WMSize(var Msg: TMessage); message WM_SIZE;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMSize(var Msg: TMessage);
begin
 if Msg.WParam = SIZE_MINIMIZED then
   ShowMessage("Minimized");

 if Msg.WParam = SIZE_MAXIMIZED then
   ShowMessage("Maximized");
end;


Странно SIZE_MAXIMIZED работает, а вот при минимизации нет .
При менимизации WM_SIZE вообще не приходит...


 
Lera   (2006-03-24 13:10) [10]

спасибо...а ты не знаешь как тогда быть?


 
Kolan ©   (2006-03-24 13:17) [11]

Для ятестов кинул на форму лист бох. код изменил так:

procedure TForm1.WMSize(var Msg: TMessage);
begin
 case Msg.WParam of
   SIZE_MINIMIZED: ListBox1.Items.Add("SIZE_MINIMIZED");
   SIZE_MAXIMIZED: ListBox1.Items.Add("SIZE_MAXIMIZED");
   SIZE_MAXHIDE: ListBox1.Items.Add("SIZE_MAXHIDE");
   SIZE_MAXSHOW: ListBox1.Items.Add("SIZE_MAXSHOW");
   SIZE_RESTORED: ListBox1.Items.Add("SIZE_RESTORED");
 else
   ListBox1.Items.Add("UnKnown");
 end;
end;


Не приходит wm_size...


 
Kolan ©   (2006-03-24 13:18) [12]

Для ятестов кинул на форму лист бох. код изменил так:

procedure TForm1.WMSize(var Msg: TMessage);
begin
 case Msg.WParam of
   SIZE_MINIMIZED: ListBox1.Items.Add("SIZE_MINIMIZED");
   SIZE_MAXIMIZED: ListBox1.Items.Add("SIZE_MAXIMIZED");
   SIZE_MAXHIDE: ListBox1.Items.Add("SIZE_MAXHIDE");
   SIZE_MAXSHOW: ListBox1.Items.Add("SIZE_MAXSHOW");
   SIZE_RESTORED: ListBox1.Items.Add("SIZE_RESTORED");
 else
   ListBox1.Items.Add("UnKnown");
 end;
end;


Не приходит wm_size...


 
Lera   (2006-03-24 13:18) [13]

я опытным путем нашла код параметра минимизации 61472


 
begin...end ©   (2006-03-24 13:20) [14]

> Lera   (24.03.06 11:47) [5]
> имеется ввиду сворачивание по значку "-" в правом углу формы

Тогда см. [3]:

TMyForm = class(TForm)
private
 procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
end;

procedure TMyForm.WMSysCommand(var Message: TWMSysCommand);
begin
 if Message.CmdType and $FFF0 = SC_MINIMIZE then
   ShowMessage("Окно сворачивается!");
 inherited
end


Этот же обработчик сработает и в том случае, если, например, был выбран пункт системного меню (в левом верхнем углу окна). Если нужно отловить именно сворачивание по нажатию на кнопку "Свернуть", дополнительно посылайте из обработчика сообщение WM_NCHITTEST и проверяйте результат на  HTMINBUTTON.


 
balepa ©   (2006-03-24 14:01) [15]


KolanСтранно SIZE_MAXIMIZED работает, а вот при минимизации нет .
При менимизации WM_SIZE вообще не приходит...


А если сделать все это во второй форме то приходит.
А почему в первой не работает ?


 
Lera   (2006-03-24 14:19) [16]

а вы не знаете какому сообщению windows соответствует
Application.minimize?


 
Kolan ©   (2006-03-24 14:27) [17]

По всей видимости так:
PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);


 
kea   (2006-03-24 14:28) [18]

//---- смотрим unit Forms
procedure TApplication.Minimize;
begin
 if not IsIconic(FHandle) then
 begin
   NormalizeTopMosts;
   SetActiveWindow(FHandle);
   if (MainForm <> nil) and (ShowMainForm or MainForm.Visible) then
   begin
     SetWindowPos(FHandle, MainForm.Handle, MainForm.Left, MainForm.Top,
       MainForm.Width, 0, SWP_SHOWWINDOW);
     DefWindowProc(FHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
   end else
     ShowWinNoAnimate(FHandle, SW_MINIMIZE);
   if Assigned(FOnMinimize) then FOnMinimize(Self);
 end;
end;
//----
Окну посылается WM_SYSCOMMAND с wParam = SC_MINIMIZE


 
Lera   (2006-03-24 14:45) [19]

спасибо, а чтобы развернуть приложение в прежний вид существуют ли команды windows?


 
Kolan ©   (2006-03-24 14:47) [20]

PostMessage(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);

У вас что нет справки.

WM_SYSCOMMAND + Windows SDK


 
Lera   (2006-03-24 14:51) [21]

справки нет, а где можно взять... SC_MAXIMIZE раскрывает все формы на весь экран



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

Форум: "Начинающим";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.015 c
2-1142964079
Quattro
2006-03-21 21:01
2006.04.09
Окно-заставка


6-1135782302
Nepovezlo
2005-12-28 18:05
2006.04.09
Передача данных по ЛВС...


1-1141427734
fenixaz
2006-03-04 02:15
2006.04.09
Вопросы по ComboBox


15-1142596089
без ника
2006-03-17 14:48
2006.04.09
Правила оформелния кода, названия компонентов


1-1141561561
Fenix
2006-03-05 15:26
2006.04.09
Копирование отформатированного текст из RichEdit a





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