现在的位置: 首页 > 综合 > 正文

使用AnimateWindow来实现窗口淡入淡出

2013年10月27日 ⁄ 综合 ⁄ 共 1472字 ⁄ 字号 评论关闭

如果是在VC6下进行编译,应引入下面的预编译宏,注意放在windows.h的前面
#undef  WINVER  
#define  WINVER   0x500
为什么要引入上面的宏呢?看看winuser.h里面该API的声明就明白了:
#if(WINVER >= 0x0500)
WINUSERAPI
BOOL
WINAPI
AnimateWindow(
    HWND hWnd,
    DWORD dwTime,
    DWORD dwFlags);
#endif /* WINVER >= 0x0500 */
如果你不进行这个宏的从定义,该API就被排除了,编译会有error。

Declared in Winuser.h, include Windows.h

函数原型:
BOOL AnimateWindow(
    HWND hwnd,
    DWORD dwTime,
    DWORD dwFlags);  
  
函数功能:
该函数能在显示与隐藏窗口时产生特殊类型的动画效果,主要有四种动画,滚动,滑动,折叠或展开,和淡入淡出。

参数含义:
hwnd: 指定产生动画的窗口的句柄。
dwTime:指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒。
dwFags:指定动画类型,这个参数可以是一个或多个下列标志的组合。标志描述:   
    AW_SLIDE:  使用滑动类型,缺省则为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略。   
    AW_ACTIVATE: 激活窗口,不要和AW_HIDE标志一起使用。   
    AW_BLEND:  实现淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志。   
    AW_HIDE:  隐藏窗口,缺省则显示窗口。   
    AW_CENTER:  若使用了AW_HIDE标志,则使窗口向内重叠,即收缩窗口;若未使用AW_HIDE标志,则使窗口向外扩展,即展开窗口。   
    AW_HOR_POSITIVE: 自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER或者AW_BLEND标志时,该标志将被忽略。   
    AW_VER_POSITIVE: 自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER或者AW_BLEND标志时,该标志将被忽略。   
    AW_VER_NEGATIVE: 自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER或者AW_BLEND标志时,该标志将被忽略。   

返回值:
如果函数成功,返回值为非零;如果函数失败,返回值为零。在下列情况下函数将失败:
1、如果窗口使用窗口区域,但是XP下不会失败;
2、窗口已经显示了,你还想通过这个API来显示窗口;
3、窗口已经消失了,你试图通过这个API来隐藏窗口;
4、没有为滚动或者滑动指定方向;
5、对一个子窗口使用AW_BLEND;
6、调用这个API的线程并不拥有hwnd指定的窗口;

函数信息:
最小DLL版本: user32.dll
头文件: Declared in Winuser.h, include Windows.h
引入的库: User32.lib
最小操作系统: Windows 98, Windows 2000

注意:使用AnimateWindow来进行淡出时,此时窗口收不到鼠标消息了,如果你有需求:在窗口淡出即将消失时,如果鼠标移上去,窗口恢复正常显示,并且不消失。使用AnimateWindow是没办法实现的,那是否有其它的方法呢?下次再谈,o(∩_∩)o...。

[END]

抱歉!评论已关闭.