调用API函数使你的程序子窗口'闪出'显示

 
类 别:用户界面
    你是不是有时觉的你的应用程序的子窗口弹出的方式是不是太单调呢,最近本人学习API函数时发现了一个可以让你的子窗体用不同的方式弹出的函数,函数原形为:
                 BOOL AnimateWindow(
                     HWND hwnd,    // handle to window
                     DWORD dwTime, // duration of animation
                     DWORD dwFlags // animation type
                            );
参数说明:
  1。hwnd :     一个你要显示窗体的句柄。
  2。dwTime :   完成显示操作的时间。(一般为500-1000,你可以自己调节)
 3。dwFlags : 这是一个关键的东东,它决定了你的子窗体弹出的方式。
 dwFlags其中包括9种基本弹出方式,当然你可以组合它们使用,下面我就对者9种方法做个简单的介绍:
 a. AW_SLIDE :    表示用滑动方式显示;
 b. AW_BLEND :    表示用淡出或淡入方式显示;(Windows 2000菜单显示)
 c. AW_CENTER :   表示窗体从小窗体沿对角线扩大至窗体定义的大小;
 d. AW_HIDE :     顾名思义,就是隐藏窗体;
 e. AW_HOR_POSITIVE :窗体从左向右生成生成显示
 f. AW_HOR_NEGATIVE :窗体从右向左生成生成显示
 g. AW_VER_NEGATIVE :窗体从下向上生成生成显示
 h: AW_VER_POSITIVE :窗体从上向下生成生成显示
 i: AW_ACTIVATE :    顾名思义,就是激活窗体;
以上就是9种显示的模式,你可以组合 (AW_HOR_POSITIVE 或 AW_HOR_NEGATIVE) 和(AW_VER_POSITIVE 或 AW_VER_NEGATIVE)中的一种。
下面写一个例子给大家参考:
若 Form1 是程序主窗体, Form2 是程序子窗体(最好是动态生成的窗体),现在想让Form2在Form1上的一个按扭生成,这里我是让Form2由小变大显示,为了是显示效果更好,你可以在Form2的Create事件中加入:
  begin
   Self.Left:= Round(Screen.Width/2-Width/2);
   Self.Top :=Round(Screen.Height/2-Height/2);
 end;
在Form1窗体的按纽事件中加入:
  begin
    Application.CreateForm(TForm2,Form2);
    AnimateWindow(Form2.Handle,500,AW_CENTER);
    Form2.Show; //这句比较重要,没有这句就不能控制Form2了,
    Form2.Visible:=False;
    Form2.ShowModal;
  end;
     我运行的环境是 Delphi5.0 +Windows 2000.

posted @ 2010-10-21 16:24  lenya  阅读(208)  评论(0编辑  收藏  举报