Delphi 6 - TApplicationEvents.OnMinimize не запускается «Показать рабочий стол» - PullRequest
3 голосов
/ 07 января 2011

У меня есть приложение Delphi 6 Pro, которое делает определенные вещи, когда приложение свернуто. Я делаю свою работу в событии OnMinimize (), которое принадлежит компоненту TApplicationEvents. Он прекрасно работает, когда используется кнопка «Свернуть» на панели управления главного окна, однако, когда кнопка «Показать рабочий стол» в Windows XP используется для минимизации всех активных приложений, событие OnMinimize () не вызывается. Есть ли способ исправить это, или мне придется сделать что-то грязное в основной WndProc ()?

- росшлер

Ответы [ 3 ]

7 голосов
/ 07 января 2011

Добавить

protected
  { Private declarations }
  procedure WMSize(var Message: TWMSize); message WM_SIZE;

, где

procedure TForm1.WMSize(var Message: TWMSize);
begin
  if Message.SizeType = SIZE_MINIMIZED then
    beep;
end;

Как вариант, конечно, вы можете просто сделать

protected
  { Private declarations }
  procedure WndProc(var Message: TMessage); override;

, где

procedure TForm1.WndProc(var Message: TMessage);
begin
  inherited;
  case Message.Msg of
    WM_SIZE:
      if Message.WParam = SIZE_MINIMIZED then
        beep;
  end;
end;
1 голос
/ 07 января 2011

Помимо ответов, которые, надеюсь, решат вашу проблему, я нашел это описание на сайте Microsoft:

По умолчанию панель быстрого запуска также содержит две специальные кнопки. Нажмите кнопку Показать рабочий стол Изображение значка Показать рабочий стол для временно скрыть все открытые окна и показать рабочий стол; нажмите кнопку снова, чтобы снова показать все окна.

Исходя из этого, я понимаю, что Show Desktop фактически не сводит окон к минимуму; просто делает их невидимыми (делая Z-порядок рабочего стола самым верхним). В этом случае правильно, ваше приложение не получит сообщение Свернуть.

1 голос
/ 07 января 2011

Если я правильно помню, проблема с приложениями Delphi заключается в том, что основной обработчик сообщений принадлежит не «главному» окну, а TApplication.В любом случае, используйте что-то вроде WinSight, чтобы знать, какие сообщения доставляются, и при запуске Show Desktop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...