Когда Delphi-приложение минимизировано, иконка, которая вы видите - реальное главное окно, объект TApplication, поэтому вам необходимо использовать переменную Application. Таким образом, чтобы удостовериться что приложение минимизировано, вызовите IsIconic(Application.Handle). Если функция возвратит True, значит так оно и есть. Для рисования на иконке создайте обработчик события Application.OnMessage. Здесь вы можете проверять наличие сообщения WM_Paint и при его нахождении отрисовывать иконку. Это должно выглядеть приблизительно так:
...{ private declarations }procedure AppOnMessage(VAR Msg : TMsg; VAR Handled : Boolean);... procedure TForm1.AppOnMessage(VAR Msg : TMsg; VAR Handled : Boolean);VARDC : hDC;PS : TPaintStuff;beginIF (Msg.Message = WM_PAINT) AND IsIconic(Application.Handle) THENBEGINDC := BeginPaint(Application.Handle, PS);... осуществляем отрисовку с помощью вызовов Windows GDI ... EndPaint(Application.Handle, PS);Handled := True;END;end; procedure TForm1.OnCreate(Sender : TObject);beginApplication.OnMessage := AppOnMessage;end; |
Код создан на основе алгоритма Neil Rubenking.
Nick Hodges
Monterey, CA [000605]