whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
 misc ¦  tutorials ¦  Add&Win Game

Tips (1541)

Database (90)
Files (137)
Forms (107)
Graphic (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Math (76)
Misc (126)
Multimedia (45)
Objects/
ActiveX (51)

OpenTools API (3)
Printing (35)
Strings (83)
System (266)
VCL (242)

Top15

Tips sort by
component


Search Tip

Add new Tip

Add&Win Game

Advertising

35 Visitors Online


 
...use the DrawAnimatedRects API?
Autor: Leon Zandman
Homepage: http://www.studenten.net/
[ Print tip ]  

Tip Rating (7):  
     


{
  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;

 

Rate this tip:

poor
very good


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners