AnimateWindow的使用

本文介绍了解决AnimateWindow在不同Windows版本上兼容性问题的方法。通过动态加载User32.dll中的AnimateWindow函数,实现了窗口平滑隐藏效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间经常在论坛或者文档上面讨论AnimateWindow的使用,或者有说到98下面不能使用的,或者有人说MSDN上面说98下一定能用的,我试了一下,2000下面我尚不能直接使用这个函数,98下面更不能够了。察看了一下User32.dll,那个函数又确确实实的存在,究其原因,就是用为这个函数的Winver定义在大于0x0500,这个问题已经有人在文章中提到了,他使用的是修改函数定义,将Winver降级使用,这种方法因为涉及到修改头文件,麻烦,而且心里面感觉怪怪的,因此就直接将AnimateWindow的使用方法修改成以下所列的:

首先定义常量:

#define AW_HOR_POSITIVE             0x00000001
#define AW_HOR_NEGATIVE             0x00000002
#define AW_VER_POSITIVE             0x00000004
#define AW_VER_NEGATIVE             0x00000008
#define AW_CENTER                   0x00000010
#define AW_HIDE                     0x00010000
#define AW_ACTIVATE                 0x00020000
#define AW_SLIDE                    0x00040000
#define AW_BLEND                    0x00080000

实现部分如下:

typedef UINT (CALLBACK* LPFNDLLFUNC1)(  HWND hwnd, DWORD dwTime,  DWORD dwFlags);//定义AnimateWindow的函数指针

HINSTANCE h;
LPFNDLLFUNC1 p;
h = LoadLibrary( "user32.dll" );
p = (LPFNDLLFUNC1) GetProcAddress( h, "AnimateWindow" );
p(GetSafeHwnd(), 1000,AW_HIDE|AW_BLEND);
FreeLibrary(h);

这段代码实现了一种窗口慢慢消失的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值