NSIS插件使用之动画annimate

/*
可能参考API函数:AnimateWindow的相关信息
/NOUNLOAD: 不卸载动态库
对于大部份人来说,可能都只会按插件提供的例子去做,能编译得过能正常运行就算了,但你想过没有,为什么有些插件需要/NOUNLOAD才能正常运行,而有些插件却从来不用也能正常运行?
首先,/NOUNLOAD是NSIS遗留下来的历史问题,是为了兼容旧版本的插件而保留下来的,在NSIS2.42之前,如果想插件在调用之后不被FreeLibrary,必须使用/NOUNLOAD参数 或SetPluginUnload alwaysoff,但这有个不便之处是必须以后不加/NOUNLOAD参数再调用一次该插件,否则会造成安装程序在退出时无法删除该dll。
从NSIS2.42开始,只要新编写的插件调用它新提供的接口,就可以自动在安装程序退出时才被FreeLibrary,因此调用插件命令时无需使用/NOUNLOAD参数。
其次,对于旧版本的插件不用 /NOUNLOAD参数也能正常运行的原因在于它被FreeLibrary后没有造成任何影响,但对于一个界面类的插件,肯定要保持插件不被FreeLibrary的,因为它需要将窗口的回调函数修改成自己内部的函数,如果它被FreeLibrary了,后果可想而知。
/ATIME: 时间,单位是毫秒1000ms=1s
/FLAGS:显示效果类型
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标志时,该标志将被忽略。
AW_HOR_NEGATIVE:自右向左显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。
/X:窗口显示位置X轴,相对于桌面
/Y:窗口显示位置Y轴,相对于桌面
/SFG:在动画退出后,将父窗口带到最前(激活状态)
/NOCANCEL:点击鼠标左键也不退出
/BORDER:创建带边框的界面
/COLOR:为GIF图片创建透明底色
/IFNC:清除之前的NOCANCEL标记,将ATIME清空为0这样动画不需再等待
*/
!AddPluginDir “…/Plugins”
OutFile “Animate.exe”
Icon “ico.ico”
!define IMG_NAME “1.jpg”
!ifndef AW_HOR_POSITIVE
!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
!endif
Function .onInit
IntOp $R0 ${AW_VER_POSITIVE} | ${AW_HOR_POSITIVE}
IntOp $R0 $R0 | KaTeX parse error: Expected 'EOF', got '#' at position 13: {AW_SLIDE} #̲animate::show /…R0 /X=0 /Y=0 /SFG /NOCANCEL “ E X E D I R EXEDIR EXEDIR{IMG_NAME}”
animate::show /NOUNLOAD /ATIME=1000 /FLAGS= A W C E N T E R " {AW_CENTER} " AWCENTER"EXEDIR${IMG_NAME}"
Pop $0 ; show, error
FunctionEnd
Function .onGUIInit
animate::hwnd /NOUNLOAD
Pop $1
ShowWindow $1 0
FunctionEnd
Function .onGUIEnd
animate::hwnd /NOUNLOAD
Pop $1
ShowWindow $1 1
IntOp $R0 ${AW_VER_POSITIVE} | ${AW_HOR_POSITIVE}
IntOp $R0 $R0 | KaTeX parse error: Expected 'EOF', got '#' at position 13: {AW_SLIDE} #̲animate::wait /…R0 /SFG /IFNC 1000
animate::wait /ATIME=1000 /FLAGS=${AW_CENTER} /SFG /IFNC 0
Pop $1 ; reason to exit - “click”, “wait”, “error”, “terminate”
FunctionEnd
Section “”
SectionEnd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值