MFC窗体滑动、缩放、渐变动态效果的实现 .

转自:http://blog.csdn.net/shufac/article/details/24932279

 

要实现动画显示窗体效果需要使用AnimateWindow函数,并设置0x00000010风格,由于该函数并没有被封装,所以需要进行手动导入User32动态库。并定义0x00000010风格为AW_CENTER。

第一步,定义两个宏,用于界面的动态显示和消失

#define AW_CENTER                   0x00000010 //动画

#define AW_HIDE                     0x00010000 //隐藏

第二步,在对话框初始化函数中添加下面的代码

  1. CenterWindow();  
  2. //设置风格   
  3. DWORD dwStyle = AW_CENTER;  
  4. //手动导入动态链接库User32.dll   
  5. HINSTANCE hInst = LoadLibrary(_T("User32.DLL"));  
  6. //函数结构   
  7. typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));  
  8. //声明函数   
  9. MYFUNC* AnimateWindow;  
  10. //调用函数   
  11. AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow");  
  12. //第二个参数设定动画时间   
  13. AnimateWindow(this->m_hWnd,5000,dwStyle);  
  14. //释放动态链接库   
  15. FreeLibrary(hInst);   
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消息,代码如下:

  1. DWORD dwStyle = AW_CENTER;  
  2. HINSTANCE hInst = LoadLibrary(_T("User32.DLL"));  
  3. typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));  
  4. MYFUNC* AnimateWindow;  
  5. AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow");  
  6. AnimateWindow(this->GetSafeHwnd(),2000,AW_HIDE|<STRONG><SPAN style="COLOR: #ff0000">dwStyle</SPAN></STRONG>);  
  7. FreeLibrary(hInst);  
  8. CDialog::OnClose();   
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|<strong><span style="color:#ff0000;">dwStyle</span></strong>);
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 的值,自己动手实现。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值