吵吵   2011-03-03  阅读:3,972

看到搜狗拼音输入法的时候,老是想着他换肤的时候的转动是怎么实现的。找了半天,发现windows api还有这个函数,可以方便的实现窗口动画,这样子以前窗口的透明度渐变也不需要用个timer慢慢的一点点变了。

在vc中使用的方法如下:www.chaochaoblog.com


HINSTANCE hInst;

hInst=LoadLibrary("User32.DLL");//从user32.dll中读取的。

typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));

MYFUNC* AnimateWindow;

AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow");

AnimateWindow(GetSafeHwnd(), times,dwFags);

FreeLibrary(hInst);//释放动态库


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_VER_POSITIVE:自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。

AW_VER_NEGATIVE:自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。 www.chaochaoblog.com

看到上面的dwflag值吗,一些不同的组合可以实现不同的效果,总的来说其实只有三个效果:

滚、滑动动画、缩小放大动画、透明渐变动画。

到了这里又郁闷了一回,看来搜狗的渐变动画不是用这个做的。

看来还是回去用setwindowrgn慢慢来做吧。可怜又要处理位图的缩放了。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

发表评论

电子邮件地址不会被公开。 必填项已用*标注