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

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

Знак минимизации окна. [D7, XP]


Страницы:   1 2

Псарь ©   (2011-09-26 22:04:00) 

Какое сообщение WM_XXX нужно словить, чтобы узнать минимизировано ли окно или нет.
WM_Size - SIZE_MINIMIZED - Не работает.
IsIconic не подходит.


Dennis I. Komarov   (2011-09-27 20:46:00) [21]

Надо лезть в генофонд, ибо [10]


QAZ   (2011-09-27 20:33:00) [22]


> Омлет ©   (27.09.11 15:23) [12]
> Это косяк Delphi.
> В 2007 работает как надо.

это не косяк делфи,так работает винда
а вот в 2007 наверно нахитромудрили или у тебя чтото нетак

вообщето
на минимизацию приходит WM_SHOWWINDOW,false,SW_PARENTCLOSING
а на раскрытие WM_SHOWWINDOW,true,SW_PARENTOPENING
и это уже работает действительно везде и всегда


Псарь   (2011-09-27 15:31:00) [23]


> Омлет ©   (27.09.11 15:30) [14]


Спасибо за тесты.


Омлет   (2011-09-27 15:30:00) [24]

> Псарь   (27.09.11 15:26) [13]

Да. Работает при Win+M, при Win+D и при обычном сворачивании кнопкой.


Псарь   (2011-09-27 15:26:00) [25]


> Омлет ©   (27.09.11 15:23) [12]
>
> Это косяк Delphi.
> В 2007 работает как надо.


Это, работает при Win + D?


WM_SIZE:
  begin
   If (wParam = SIZE_MINIMIZED) then Close; // Не работает. Почему?

  end;


Омлет   (2011-09-27 15:23:00) [26]

Это косяк Delphi.
В 2007 работает как надо.


Игорь Шевченко   (2011-09-27 15:20:00) [27]


> Но при Win + D, да не работает


При Win+D окно рабочего стола выходит на передний план, заслоняя собой все остальные окна. При этом остальные окна не минимизируются и не изменяют свой размер, насколько мне известно. Они просто заслоняются


Псарь   (2011-09-27 15:20:00) [28]


> Cobalt ©   (27.09.11 15:08) [9]


Не, не пашет.


Cobalt   (2011-09-27 15:08:00) [29]

а ты попробуй вместо
If (wParam = SIZE_MINIMIZED) then Close;
написать
If (wParam = SIZE_MINIMIZED) then memo1.Lines.Add('SIZE_MINIMIZED');


Псарь   (2011-09-27 14:37:00) [30]

> Омлет ©   (27.09.11 11:46) [3]
> Ты уж определись, что тебе надо.

А кто мне тут GetWindowPlacement предлагал, а? :D

> Отловить событие сворачивания окна - это WM_SIZE при Message.SizeType = SIZEICONIC.

Оно не работает.


> Игорь Шевченко ©   (27.09.11 11:50) [4]
>
> WM_SYSCOMMAND


Спасибо.
Но при Win + D, да не работает. Временный вариант.


procedure TForm1.WndProc(var Message: TMessage);
begin
 with Message do
 case Msg of
   WM_SIZE:
   begin
    If (wParam = SIZE_MINIMIZED) then Close; // Не работает. Почему?

   end;

   WM_SYSCOMMAND:
   begin
     If (wParam = SC_MINIMIZE) then Close;  // Работает.

   end;
 end;

 inherited;
end;


Омлет   (2011-09-27 13:15:00) [31]

> Игорь Шевченко ©   (27.09.11 13:04) [6]

И какого пользователя это волнует? )


Игорь Шевченко   (2011-09-27 13:04:00) [32]

Омлет ©   (27.09.11 12:05) [5]

При Win+D окно "не совсем минимизируется"


Омлет   (2011-09-27 12:05:00) [33]

Только надо учесть, что WM_SYSCOMMAND не срабатывает, к примеру, при сворачивании посредством нажатия Win+D или Win+M.


Игорь Шевченко   (2011-09-27 11:50:00) [34]

WM_SYSCOMMAND


Омлет   (2011-09-27 11:46:00) [35]

> Тогда уж лучше IsIconic.
> Нужно сообщение, а не функция.


Ну-ну. IsIconic - это типа сообщение ))

Ты уж определись, что тебе надо.
Узнать, минимизировано ли окно - это GetWindowPlacement.
Отловить событие сворачивания окна - это WM_SIZE при Message.SizeType = SIZEICONIC.


Псарь   (2011-09-27 11:33:00) [36]


> Омлет ©   (26.09.11 22:25) [1]
>
> GetWindowPlacement


Тогда уж лучше IsIconic.
Нужно сообщение, а не функция.


Омлет   (2011-09-26 22:25:00) [37]

GetWindowPlacement


Страницы:   1 2

Наверх

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