Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

минимизация формы [D7, XP]


Страницы:   1 2

Lera ©   (2006-03-24 11:03:00) 

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


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

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


Kolan   (2006-03-24 14:47:00) [2]

PostMessage(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);

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

WM_SYSCOMMAND + Windows SDK


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

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


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

//---- смотрим 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


Kolan   (2006-03-24 14:27:00) [5]

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


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

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


balepa   (2006-03-24 14:01:00) [7]


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


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


begin...end   (2006-03-24 13:20:00) [8]

> 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.


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

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


Kolan   (2006-03-24 13:18:00) [10]

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

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:17:00) [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...


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

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


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

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 12:23:00) [14]

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


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

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


balepa   (2006-03-24 11:54:00) [16]

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


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

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


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

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


TUser   (2006-03-24 11:33:00) [19]

wm_syscommand


balepa   (2006-03-24 11:26:00) [20]

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


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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо