发新话题
打印

[IS]设置自定义对话框

如何调用自定义对话框?Installshield帮助中有说明,但有一些环节弄不好就无法实验成功。比如ControlID, DialogID等。
通过自己的摸索,我完成了自定义对话框的建立、事件编写已经调用,现整理出来,希望能给大家提供帮助。
1.新建对话框
(1)在User Interface->dialogs中新建一个Dialog,命名为cstlDialog;
(2)通过Control tool bar加入一个Text Area,Text属性填入"我的自定义对话框";
(3)加入三个Push Button,分别设置Text属性为Back,OK,Next,Control Identifier分别设置为14,13,15。其他控件可以根据需要添加;
(4)Additional Tools->Direct Editor找到Dialog,设置cstlDialog的ISResourceID为10333(如果有重复就改变数字) 。
2.编写对话框事件
新建一个脚本文件,命名,比如叫"cstlDialog.rul"
粘贴如下代码:

#define RES_DIALOG_ID     10333//对话框的ID
#define RES_PBUT_NEXT         ; ; ; 15   // Next 按钮的ID
#define RES_PBUT_OK       13   // OK按钮的ID
#define RES_PBUT_BACK         ; ; ;14   // BACK按钮的ID
#include "Ifx.h"

export prototype ExFn_DefineDialog(HWND);

function ExFn_DefineDialog(hMSI)
    STRING  szDialogName, szDLLName, szDialog;
    NUMBER  nDialog, nResult, nCmdValue;
    BOOL    bDone;
    HWND    hInstanc e, hwndParent;        & nbsp; 
   // STRING sValue;
begin


    szDialogName = "cstl的自定义对话框";
    hInstance = 0;//默认值
    szDLLName = "";    ////默认值

    szDialog = "";//如果指定了对话框的ID,这里就设置为空字符串。
   
    hwndParent = 0;//保留参数,必须为0
   
    nResult  = DefineDialog (szDialogName, hInstance, szDLLName,
                                RES_DIALOG_I D, szDialog, hwndParent,
                                HWND_INSTALL , DLG_MSG_STANDARD|DLG_CENTERED);
   
    // 错误检查
    if (nResult < 0) then
        MessageBox ("出错了.", SEVERE);
        bDone = TRUE;
        abort;
    endif;


   bDone = FALSE;

  //循环
  repeat

        //显示对话框,nCom Value返回在对话框中的事件,如果正常,返回Control ID
        nCmdValue = WaitOnDialog(szDialogName);

        //NumToStr(s Value,nCmdValue);
        //MessageBox (sValue,INFORMATION);
        switch (nCmdValue)
              case DLG_CLOSE:
                  // 关闭窗口
                  Do (EXIT);
              case DLG_ERR:
                  MessageBox ("无法显示自定义对话框,安装取消.", SEVERE);
                  abort;
              case DLG_INIT: ;
      

TOP

发新话题