Delphi World - Рисование на минимизированной иконке
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Рисование на минимизированной иконке

Автор: Nick Hodges (Monterey, CA)

Есть ли у кого пример рисования на иконке минимизированного приложения с помощью Delphi?

Когда 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);
var
  DC: hDC;
  PS: TPaintStuff;
begin
  if (Msg.Message = WM_PAINT) and IsIconic(Application.Handle) then
  begin
    DC := BeginPaint(Application.Handle, PS);
    ...осуществляем отрисовку с помощью вызовов Windows GDI...

    EndPaint(Application.Handle, PS);
    Handled := True;
  end;
end;

procedure TForm1.OnCreate(Sender: TObject);
begin
  Application.OnMessage := AppOnMessage;
end;

Код создан на основе алгоритма Neil Rubenking.

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования