原文NSIS:实现程序窗口逐渐透明的渐入渐出效果
需要修改版的插件(支持timer功能):
MUI:InstallOptions.dll
MUI2:nsDialogs.dll
以及system插件,(受api限制)只能运行于2k或者更高的平台之上。
轻狂说明:
请在相应目录下建立transparent.ini文件。
005 |
;-------------------------------- |
006 |
!define MUI2 ;定义UI版本(MUI,MUI2) |
007 |
!define iTransparentPercent 90 ;定义透明度 |
011 |
Name "Transparent Example" |
012 |
SetCompressor /SOLID lzma |
014 |
OutFile transparent_nsis.exe |
021 |
!define INI $PLUGINSDIR\transparent.ini |
023 |
!include LogicLib.nsh |
025 |
!define GWL_EXSTYLE -20 |
027 |
!ifndef WS_EX_LAYERED |
028 |
!define WS_EX_LAYERED 0x80000 |
033 |
!define MUI_CUSTOMFUNCTION_ABORT UserAbort |
035 |
Page custom nsDialogsPage |
037 |
page custom InstallOptionsPage |
039 |
!define MUI_PAGE_CUSTOMFUNCTION_SHOW welcome_PageShow |
041 |
!insertmacro MUI_PAGE_WELCOME |
042 |
!insertmacro MUI_PAGE_DIRECTORY |
043 |
!insertmacro MUI_PAGE_INSTFILES |
044 |
!insertmacro MUI_PAGE_FINISH |
045 |
;-------------------------------- |
046 |
!insertmacro MUI_LANGUAGE "SimpChinese" |
049 |
Function welcome_PageShow |
052 |
nsDialogs::KillTimer /NOUNLOAD $TIMERID |
054 |
GetDlgItem $0 $hwndparent 3 |
056 |
${if} $bTransparent == 0 |
057 |
${For} $R0 0 $iTransparent |
058 |
system::call 'user32::SetLayeredWindowAttributes(i $HWNDPARENT, i 0, i R0, i ${LWA_ALPHA}) .iR1' |
062 |
StrCpy $bTransparent 1 |
065 |
${ForEach} $R0 $iTransparent 0 - 1 |
066 |
system::call 'user32::SetLayeredWindowAttributes(i $HWNDPARENT, i 0, i R0, i ${LWA_ALPHA}) .iR1' |
071 |
Messagebox MB_YESNO|MB_ICONQUESTION "Are Sure you want to cancel?" IDYES +2 |
075 |
Function .onInstSuccess |
076 |
Messagebox MB_OK|MB_ICONINFORMATION "Install Success!" |
079 |
Function SetWindowAttrib |
080 |
${if} $bTransparent == 0 |
081 |
system::call 'user32::GetWindowLong(i $HWNDPARENT, i ${GWL_EXSTYLE}) .iR0' |
082 |
;messagebox mb_ok $R0 |
083 |
IntOp $R0 $R0 + ${WS_EX_LAYERED} |
084 |
system::call 'user32::SetWindowLong(i $HWNDPARENT, i ${GWL_EXSTYLE}, i R0) .iR1' |
085 |
system::call 'user32::SetLayeredWindowAttributes(i $HWNDPARENT, i 0, i 0, i ${LWA_ALPHA}) .iR2' |
092 |
Function InstallOptionsPage |
094 |
InstallOptions::initDialog /NOUNLOAD ${INI} |
096 |
;如果你想做的更逼真一些,请把它仿成欢迎页面(你的初始页面)一样的 |
102 |
Pop $0 ;Free Timer id |
103 |
GetDlgItem $1 $HWNDPARENT 1 |
104 |
SendMessage $1 ${BM_CLICK} 0 1 |
106 |
Function nsDialogsPage |
108 |
nsDialogs::Create /NOUNLOAD 1018 |
110 |
;如果你想做的更逼真一些,请把它仿成欢迎页面(你的初始页面)一样的 |
111 |
GetFunctionAddress $0 OnTimer |
112 |
nsDialogs::CreateTimer /NOUNLOAD $0 10 |
120 |
File /oname=${INI} "transparent.ini" |
122 |
IntOp $iTransparent ${iTransparentPercent} * 255 |
123 |
IntOp $iTransparent $iTransparent / 100 |
124 |
StrCpy $bTransparent 0 |
|
- MFC渐入渐出框实现方式二
类似360消息弹出框,实现方式一见http://blog.csdn.net/segen_jaa/article/details/7848598. 本文采用另外的API实现渐入渐出效果. 主要API:S ...
- MFC上下浮动与渐入渐出消息提示框实现
类似QQ与360软件,消息提示有两种.上下浮动.渐入渐出. 1.上下浮动提示框实现 机制,定时器响应上下浮动消息. 主要API:MoveWindow. 源码如下UpDownTipDlg.h.UpDow ...
- [Unity3D]Unity3D游戏开发之Logo渐入渐出效果的实现
---------------------------------------------------------------------------------------------------- ...
- js原生实现div渐入渐出
jq对渐入渐出进行封装,简单的使用连个方法就可以实现.fadeIn(),fadeOut();如果我们界面没有使用jq那么原生怎么实现呢? 我们讲解一下,这个原理.当我们要实现渐入的时候,首先是让隐藏的 ...
- 解决Jquery mobile点击较长文本body的时候Header和footer会渐入渐出的问题
在做一个Phonegap+Jqm工程的时候,出现了如题的问题,相信很多人都遇到过Jquerymobile点击body时候header和footer会闪烁的显示和隐藏问题,fixed却并不能真 ...
- 在FL Studio中如何做出渐入的人声效果
当我们在拿到一段人声并想把它加入歌曲中时,如果我们发现人声没有渐入的效果,直接加入到歌曲里出现会变得很突兀的话,我们就需要用到这篇文章所介绍的方法,给人声加上一个渐入的效果. 1. 找到我们需要处理的 ...
- 小程序 wepy wx.createAnimation 向右滑动渐入渐出
<style lang="less"> .animation { width: 100vw; height: 100vh; opacity: 0; background ...
- 转 android 从底部弹出一个popuwindow,渐入渐出效果。我这里是用在购物车需要选择购买选项的操作。
最近要改客户端,需要实现一个从底部弹出的popuwindow,像我这种渣渣android技术,能整出popuwindow但是整不出动画,百度之,记录一下. 从下面这个地址转的 http://blog. ...
- 以“图片渐入渐出”为例讲述jQuery插件的具体实现
首先声明,此代码以网友“斯迈欧”原创作为此例的讲解: 在这之前我们先看看我们要做的效果是什么样的: 解析下面的样式:我们要图片在过“一定时间”后自动切换,在右下角处有小方块似数字1,2,3,4,这些数 ...
随机推荐
- mongodb实现简单的增删改查
package mongoDB; import java.net.UnknownHostException; import java.util.ArrayList; import java.util. ...
- [网络]_[0基础]_[使用putty备份远程数据]
场景: 1. putty是windows上訪问linux服务的免费client之中的一个.用它来ssh到远程server备份数据是常见的做法(在没做好自己主动备份机制前), 通过putty界面尽管也不 ...
- Asp.net MVC4之 一个简单的小例子
练习: 新建一个mvc项目 要求: 有3个视图 Login Index Details 目的:感受一下MVC与传统WebForm的差异性 WebForm的请求模型 MVC请求模型 传统WebForm ...
- ESFramework 开发手册(07) -- 掉线与心跳机制(转)
虽然我们前面已经介绍完了ESFramework开发所需掌握的各种基础设施,但是还不够.想要更好地利用ESFramework这一利器,有些背景知识是我们必须要理解的.就像本文介绍的心跳机制,在严峻的In ...
- Python使用subprocess的Popen要调用系统命令
当我们须要调用系统的命令的时候,最先考虑的os模块.用os.system()和os.popen()来进行操作.可是这两个命令过于简单.不能完毕一些复杂的操作,如给执行的命令提供输入或者读取命令的输出, ...
- Socket通信原理
对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1. 什么是TCP/IP.UDP?2. Sock ...
- Ubuntu 13.04 用户安装 gnome 3.8 桌面
昨天我试用了一把 Ubuntu gnome 13.04,如果你看了那一片文章:Ubuntu Gnome 13.04 体验截图.对 Ubuntu gnome 13.04 并不是采用的gnome 3.8 ...
- 【SICP读书笔记(二)】使用过程来黏合数据 —— 酷炫吊的消息传递机制
首先,让我们来看几个内建函数 (cons x y),作用是把x和y绑定成一个序对 (car z),作用是提取z序对的第一个元素 (cdr z),作用是提取z序对的第二个元素 容易看出,这个东西有点类似 ...
- C++编程有趣的标题1 于1~9填写的运算结果的中间符号等于100
于1 2 3 4 5 6 7 8 9将九个数字"+"要么"-"符号使得结果100,编程的所有组合. 注意:数字顺序不能改变 <pre name=" ...
- js jquery版本号 金额千分之一转换功能(非规范,高效率)
没想到js将没有 金额千分之一格处理器类型(例子:1,234.01 这种格公式).互联网搜索圈,我们使用的是常规方式.常规效率受宠若惊啊.和资源密集型,速度慢(虽然处理起来会很直观). 因此专门写一个 ...