关于AnimateWindow的补充说明

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

前段时间经常在论坛或者文档上面讨论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

相应的含义我相信MSDN大家都可以查找到的

实现部分如下:

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

HINSTANCE h;

LPFNDLLFUNC1 p;

::ShowWindow(hWnd,SW_HIDE);

h = LoadLibrary( "user32.dll" );

p = (LPFNDLLFUNC1) GetProcAddress( h, "AnimateWindow" );

p(hWnd, 500,AW_HOR_POSITIVE|AW_SLIDE);

::ShowWindow(hWnd,SW_SHOW);

FreeLibrary( h );]

这段代码实现了一种从左向右的效果。

另外:

其实有许多函数都可以通过这种方式实现的,而不需要修改头文件定义。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有