文章搜索: 分类 关键字
内容1载入中...内容2载入中...内容3载入中...
您的位置:首页编程开发安装制作 → 实现 NSIS 自定义页面中的控件操作代码
实现 NSIS 自定义页面中的控件操作代码
日期:2007-2-8 20:31:57 人气:     [ ]
推荐本页:
    以下是引用片段:
    问题:
    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



    出处:其他网站 作者:佚名 本文章由 金电网 搜集整理发布
    评论人 评论内容摘要(共 0 条,查看完整内容) 得分 0 发表时间
    ·正确安装CPU风扇及风扇加油全程图解
    ·主板全程图解
    ·卡丽来教程(一)
    ·破解星空极速
    ·关于GHOST的时说找不到一个叫GHOSTER..
    ·RM RMVB转VCD DVD方法及软件下载全面..
    ·Hacktool.rootkit病毒如何清除
    ·DVD转RMVB效果最好的工具AutoRV9中文..
    ·高频时代电脑分身术——BeTwin使用详..
    ·Ulead GIF Animator 5全新接触
    ·nlite额外保留与额外删除参考
    ·Windows.2003.Datacenter.Edition.SP..
    ·图解Windows XP远程桌面连接
    ·图解-EasyRecovery 604硬盘数据恢复软..
    ·图解双网卡共享ADSL宽带
    ·Microsoft SQL 2000 错误代码
    ·自己制作ghost版xp系统
    ·主板cpu知识大全图文版
    ·手把手教你架设电影服务器(图)
    ·六招教你学会破解
    ·正确安装CPU风扇及风扇加油全程图解
    ·主板全程图解
    ·卡丽来教程(一)
    ·关于GHOST的时说找不到一个叫GHOSTER..
    ·RM RMVB转VCD DVD方法及软件下载全面..
    ·Hacktool.rootkit病毒如何清除
    ·DVD转RMVB效果最好的工具AutoRV9中文..
    ·高频时代电脑分身术——BeTwin使用详..
    ·Ulead GIF Animator 5全新接触
    ·Windows.2003.Datacenter.Edition.SP..
    ·图解Windows XP远程桌面连接
    ·图解-EasyRecovery 604硬盘数据恢复软..
    ·图解双网卡共享ADSL宽带
    ·Microsoft SQL 2000 错误代码
    ·主板cpu知识大全图文版
    ·手把手教你架设电影服务器(图)
    ·六招教你学会破解
    ·卡巴key被封的解决办法
    ·Win2003架设DNS服务器
    ·TMPGEnc 小日本的使用详释
    金电下载站 版权所有 Copyright© 2001-2005 www.jdxz.net, All Rights Reserved.
    湘ICP备05012976