MFC窗体滑动、缩放、渐变动态效果的实现
2014-05-03 23:43
344 查看
要实现动画显示窗体效果需要使用AnimateWindow函数,并设置0x00000010风格,由于该函数并没有被封装,所以需要进行手动导入User32动态库。并定义0x00000010风格为AW_CENTER。
第一步,定义两个宏,用于界面的动态显示和消失
#define AW_CENTER 0x00000010 //动画
#define AW_HIDE 0x00010000 //隐藏
第二步,在对话框初始化函数中添加下面的代码
第三步,实现界面动态消失
添加ON_WM_CLOSE消息,代码如下:
关于扩展风格 dwStyle 的参数值:
dwStyle:指定动画类型。这个参数可以是一个或多个下列标志的组合。标志描述:
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_VER_POSITIVE:自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。
AW_VER_NEGATIVE:自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。
上面的dwStyle值不同的组合可以实现不同的效果,总的来说其实只有四个效果:滚、滑动动画、缩小放大动画、透明渐变动画。
这里只是实现了界面渐变的动画效果,其他几种效果,感兴趣的可以设定不同dwStyle 的值,自己动手实现。
第一步,定义两个宏,用于界面的动态显示和消失
#define AW_CENTER 0x00000010 //动画
#define AW_HIDE 0x00010000 //隐藏
第二步,在对话框初始化函数中添加下面的代码
CenterWindow(); //设置风格 DWORD dwStyle = AW_CENTER; //手动导入动态链接库User32.dll HINSTANCE hInst = LoadLibrary(_T("User32.DLL")); //函数结构 typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD)); //声明函数 MYFUNC* AnimateWindow; //调用函数 AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow"); //第二个参数设定动画时间 AnimateWindow(this->m_hWnd,5000,dwStyle); //释放动态链接库 FreeLibrary(hInst);
第三步,实现界面动态消失
添加ON_WM_CLOSE消息,代码如下:
DWORD dwStyle = AW_CENTER; HINSTANCE hInst = LoadLibrary(_T("User32.DLL")); typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD)); MYFUNC* AnimateWindow; AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow"); AnimateWindow(this->GetSafeHwnd(),2000,AW_HIDE|dwStyle); FreeLibrary(hInst); CDialog::OnClose();
关于扩展风格 dwStyle 的参数值:
dwStyle:指定动画类型。这个参数可以是一个或多个下列标志的组合。标志描述:
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_VER_POSITIVE:自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。
AW_VER_NEGATIVE:自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。
上面的dwStyle值不同的组合可以实现不同的效果,总的来说其实只有四个效果:滚、滑动动画、缩小放大动画、透明渐变动画。
这里只是实现了界面渐变的动画效果,其他几种效果,感兴趣的可以设定不同dwStyle 的值,自己动手实现。
相关文章推荐
- 《中国教育史》简略
- JAVA异常处理机制
- CSS min-width 属性
- 嵌入式软件开发中linux系统的选择
- Problem 25:1000-digit Fibonacci number
- Oracle web tier——oracle web cache
- ArcGIS Server 10.1新特性
- 【Qt】全局忽略编译警告
- MODIS NDVI数据处理相关问题
- 细心
- 花瓣网轮播图效果
- 2.6Bootstrap学习之工具class、响应式工具
- onSaveInstanceState
- LeetCode刷题笔录Climbing Stairs
- 20140503朗沃
- 二进制文件读写函数
- springMVC传对象参数
- 二进制文件读写函数
- QueryRunner
- Linux常用快捷键