Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Вылет окна 2

Delphi , Программа и Интерфейс , Размеры и Положение

Вылет окна 2

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  A lot of Windows applications show a nice zooming animation when they 
  minimize/maximize their windows. Ofcourse you can do this too! 
  Microsoft provides the DrawAnimatedRects() function for this purpose and I'll 
  show you how to use it. 

  As an example I'll show how to show an animation that you can use to minimize 
  your application to the system tray area. This example doesn't actually minimize 
  the application, it only shows the animation. 

  First create a new application and put a button on the form. Use the following 
  OnClick-handler for the button: 
}

 procedure TForm1.Button1Click(Sender: TObject);
 var
   FormRect, TrayRect: TRect;
   hTray: THandle;
 begin
   // Get handle of tray window 
  hTray := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0,'TrayNotifyWnd', nil);

   if hTray <> 0 then
    begin
     // This is the source rect for the animation. 
    FormRect := BoundsRect;

     // Get tray window's coordinates as a TRect. This will be the animation's destination rect. 
    GetWindowRect(hTray, TrayRect);

     { 
      Now perform the actual animation. Note that this code only shows the 
      animation. It does NOT minimize this application to the tray. I leave 
      that up to yourself ;-) 

      Also notice that the Delphi Help documents are very wrong about this 
      function! Use the official MSDN docs located Microsoft's website. 
      Instead of IDANI_CAPTION you can also use IDANI_OPEN and IDANI_CLOSE, but 
      they don't seem to do anything... Maybe they are for future use? 
    }
     if not DrawAnimatedRects(Handle, IDANI_CAPTION, FormRect, TrayRect) then
      begin
       MessageDlg('DrawAnimatedRects() failed!', mtError, [mbOK], 0);
     end;
   end
    else
    begin
     MessageDlg('Can''t get tray window handle!', mtError, [mbOK], 0);
   end;
 end;

Пример кода на Delphi! Этот код демонстрирует использование функции DrawAnimatedRects из API Microsoft Windows для создания анимации масштабирования при минимальизации окна (в этом случае приложение не действительно минимальизуется).

Давайте разберемся, что делает код:

  1. Событийный обработчик Button1Click вызывается при клике кнопки на форме.
  2. Он получает handle окна трея с помощью функции FindWindowEx.
  3. Если handle успешно получен, он рассчитывает два прямоугольника:
    • FormRect: исходный прямоугольник для анимации (т.е., текущие границы формы).
    • TrayRect: целевой прямоугольник для анимации (т.е., координаты окна трея).
  4. Код затем вызывает функцию DrawAnimatedRects для выполнения фактической анимации:
    • Он указывает handle окна (Handle) и тип анимации (IDANI_CAPTION, который используется для минимальизации окна).
    • Он передает исходные и целевые прямоугольники в виде аргументов.
  5. Если анимация неудачна, код отображает сообщение об ошибке.

Обратите внимание, что этот код не действительно минимальизирует приложение в трей; он только демонстрирует анимацию. Автор оставляет реализацию минимальизации на усмотрение пользователя.

Также worth mentioning, что документы по справке Delphi содержат неправильную информацию о функции DrawAnimatedRects. Вместо этого, обратитесь к официальной документации Microsoft MSDN для точной информации.

В целом, этот код предоставляет основное пример использования DrawAnimatedRects для создания анимации масштабирования в приложении Windows.

В статье описывается, как использовать функцию DrawAnimatedRects() для создания анимации выезда окна в системную область трея.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Размеры и Положение ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:11:05/0.0054550170898438/1