Delphi WinAPI AnimateWindow - 使您能够在显示或隐藏窗口时产生特殊效果


Delphi WinAPI AnimateWindow - 使您能够在显示或隐藏窗口时产生特殊效果

AnimateWindow //使您能够在显示或隐藏窗口时产生特殊效果。有四种类型的动画:滚动、滑动、折叠或展开,以及alpha混合淡入淡出。

原型:

BOOL AnimateWindow(
  [in] HWND  hWnd, //要设置动画的窗口的控制柄。调用线程必须拥有此窗口。
  [in] DWORD dwTime,  //播放动画所需的时间,以毫秒为单位。通常,播放动画需要200毫秒。
  [in] DWORD dwFlags  //动画的类型。此参数可以是以下一个或多个值。请注意,默认情况下,这些标志在显示窗口时生效。要在隐藏窗口时生效,请使用AW_HIDE和带有适当标志的逻辑OR运算符。
);

参数:

  dwFlags //动画的类型。此参数可以是以下一个或多个值。请注意,默认情况下,这些标志在显示窗口时生效。要在隐藏窗口时生效,请使用AW_HIDE和带有适当标志的逻辑OR运算符。  

    • AW_ACTIVATE  //激活窗口。不要将此值用于AW_HIDE。
    • AW_BLEND  //使用渐变效果。只有当hwnd是顶级窗口时,才能使用此标志。
    • AW_CENTER  //如果使用AW_HIDE,则使窗口显示为向内折叠;如果未使用AW_HIDE,则使窗口显示为向外展开。不同的方向标志无效。
    • AW_HIDE  //隐藏窗口。默认情况下,将显示该窗口。
    • AW_HOR_POSITIVE  //从左到右设置窗口的动画。此标志可用于滚动或滑动动画。当与AW_CENTER或AW_BLEND一起使用时,它将被忽略。
    • AW_HOR_NEGATIVE  //从右向左设置窗口的动画。此标志可用于滚动或滑动动画。当与AW_CENTER或AW_BLEND一起使用时,它将被忽略。
    • AW_SLIDE  //使用幻灯片动画。默认情况下,使用滚动动画。与AW_CENTER一起使用时,此标志将被忽略。
    • AW_VER_POSITIVE  //从上到下设置窗口动画。此标志可用于滚动或滑动动画。当与AW_CENTER或AW_BLEND一起使用时,它将被忽略。
    • AW_VER_NEGATIVE  //从下到上设置窗口的动画。此标志可用于滚动或滑动动画。当与AW_CENTER或AW_BLEN一起使用时,它将被忽略

返回值(类型:布尔):

  • 如果函数成功,则返回值为非零。
  • 如果函数失败,返回值为零。在以下情况下,该功能将失败:
  • 如果窗口已经可见,并且您正在尝试显示该窗口。
  • 如果窗口已隐藏,而您正试图隐藏窗口。
  • 如果没有为滑动或滚动动画指定方向。
  • 尝试使用AW_BLEND设置子窗口的动画时。
  • 如果线程不拥有窗口。请注意,在本例中,AnimateWindow失败,但GetLastError返回ERROR_SUCCESS。

要获取扩展的错误信息,请调用GetLastError函数。

 

其他:

  • 使用滑动或滚动动画时,必须指定方向。它可以是AW_HOR_POSITIVE, AW_HOR_NEGATIVE, AW_VER_POSITIVE, or AW_VER_NEGATIVE。
  • 可以将AW_HOR_POSITIVE or AW_HOR_NEGATIVE with AW_VER_POSITIVE or AW_VER_NEGATIVE组合起来,以对角设置窗口动画。
  • 窗口及其子窗口的窗口过程应处理任何WM_PRINT或WM_PRINTCLIENT消息。对话框、控件和常用控件已经可以处理WM_PRINTCLIENT。默认窗口过程已经处理WM_打印。
  • 如果子窗口显示为部分剪裁,则在设置动画时,其剪裁处将有孔。
  • AnimateWindow支持RTL窗口。
  • 避免为有阴影的窗口设置动画,因为它会产生视觉上分散注意力的、不稳定的动画。

创建时间:2022.03.28  更新时间: