·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 工具使用 >> 实现 NSIS 自定义页面中的控件操作代码    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

实现 NSIS 自定义页面中的控件操作代码

作者: RESTOOLS 来源:RESTOOLS 时间:2005-09-15 点击:11898

以下是引用片段:
问题:
NSIS 中,自定义页面中,有一个 勾选框 和 一个 目录选择编辑框,能否实现勾选 CheckBox 后,目录选择编辑框 可用,如果不勾选,目录选择编辑框 变为不可用。
 

问题涉及到 NSIS 中自定义页面中的关于控件的消息传递问题,还有怎样进入回调函数处理的问题。
关于自定义页面的预先声明格式: Page custom [创建函数] [离开函数] [标题]
这里解释一下,关于自定义页面的控件回调处理,原来是在 [离开函数] 中处理的。以下是一个例子。另外,要注意 控件 在自定义页面中要设置 Flags 包含 NOTIFY 属性,才可以令程序在 [离开函数] 中处理相关操作。
引用 Setup.nsi 发表于 2005-5-16 的内容:
以下是代码片段:
/*----------------------------------------/
/ 关于 NSIS 自定义页面控件操作的简单脚本。/
/----------------------------------------*/

!include "MUI.nsh"

Name "test"
OutFile "Setup.exe"

Var hwnd ; 自定义页面的窗口句柄

Page custom PageInitFunc PageLeaveFunc  # 自定义页面
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_LANGUAGE "SimpChinese"  # 设置安装界面语言

ReserveFile "io.ini" # 预先打包文件,方便安装加速释放 io.ini

Function .onInit
  InitPluginsDir
  File /oname=$PLUGINSDIR\io.ini "io.ini"  ; 释放 io.ini 文件
FunctionEnd

Function PageInitFunc
  InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\io.ini"
  Pop $hwnd             ; 获取自定义页面的窗口句柄
  InstallOptions::show  ; 显示自定义页面
  Pop $0
FunctionEnd

Function PageLeaveFunc
  ReadINIStr $0 "$PLUGINSDIR\io.ini" "Settings" "State"  ; 读取那个控件正在使用 state 就是 Field 后面的序数
  StrCmp $0 0 NextBtn  ; 点击下一步按钮
  StrCmp $0 1 CkBox  ; 点击 checkbox -- 1 为控件的 FieldNum
  Goto NextBtn
  CkBox:
    ReadINIStr $0 "$PLUGINSDIR\io.ini" "Field 1" "State"  ; 获取checkbox 状态
    GetDlgItem $1 $hwnd 1201 ; 控件句柄获取公式 (1200 + field 2 - 1)
    EnableWindow $1 $0    ; 设置状态,根据 checkbox
    GetDlgItem $1 $hwnd 1202 ; 目录设置按钮为 1200 加 1 后的控件
    EnableWindow $1 $0   ; 设置状态,根据 checkbox
;    GetDlgItem $1 $hwnd 1203 ; 如果还有控件要处理,公式变为 (1200 + field 3 - 1 + 1) 因为前面多了个浏览按钮,所以要再加 1 ,如此类推
;    EnableWindow $1 $0
    Abort    ; 禁止进入下一页面,因为点击的并不是“下一步”按钮
  NextBtn:
FunctionEnd

Section "sec a" SEC1
SectionEnd


引用 io.ini 发表于 2005-5-16 的内容:
以下是代码片段:
[Settings]
NumFields=3

[Field 1]
Type=Checkbox
Text=选我才能使用目录框
Left=22
Right=109
Top=1
Bottom=17
Flags=NOTIFY
State=1

[Field 2]
Type=DirRequest
Left=114
Right=275
Top=1
Bottom=16

[Field 3]
Type=Checkbox
Text=第3个控件
Left=133
Right=198
Top=33
Bottom=44

汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): NSIS 安装

·上一篇: NSIS 自定义页面结合组件选择安装 ·下一篇: 关于如何打破 NSIS 的 8192 字节限制

· 版权申明: 本文引自《RESTOOLS》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《RESTOOLS》[ 作者: RESTOOLS],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号