首页 > 代码库 > 使用AnimateWindow来实现窗口淡入淡出(主要有四种动画,滚动,滑动,折叠或展开,和淡入淡出)
使用AnimateWindow来实现窗口淡入淡出(主要有四种动画,滚动,滑动,折叠或展开,和淡入淡出)
如果是在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]
http://blog.csdn.net/magictong/article/details/4074394
使用AnimateWindow来实现窗口淡入淡出(主要有四种动画,滚动,滑动,折叠或展开,和淡入淡出)