InstallShield创建自定义对话框 实例

1.Dialogs视图中,右键All Dialog,选择新建对话框(New Dialog)
2.
创建一个空白对话框,命名为MyDlg.
3.
双击MyDlg下的子项即可进入对话框的编辑模式
4.
这里我们添加一个Hello按钮。选择按钮控件然后在对话框的界面上拖拉出一个按钮控件。
   
修改按钮属性textHello。注意一下这里的Control Identifer属性值,后面我们会用到。
5.
installscript视图中新建一个rul文件,命名为MyDlg.url
6.
编写MyDlg.url
内容如下:
#define DLG_MYDLG "MyDlg" //MyDlg
是我们的对话框名字
#define HELLOBTN 1301 //1301
就是我们那个按钮的Control Identifer属性值

prototype NUMBER MyDlg(BYREF STRING);

function NUMBER MyDlg(msg)
     HWND    hDlg;     
     NUMBER nId, nResult;
    NUMBER nControl;
    BOOL bDone;
begin
    //
初始对话框函数
     if (EzDefineDialog( DLG_MYDLG,ISUSER , "MyDlg", 0 ) = DLG_ERR) then        
     return ISERR_GEN_FAILURE;
    endif;   
      
    bDone = FALSE;
    //
循环
    while (!bDone)
        nId = WaitOnDialog( DLG_MYDLG ); //
获得对话框的消息   
        switch (nId)    
        case HELLOBTN:      //
如果是HELLOBTN
            MessageBox(msg,WARNING);
            bDone=TRUE;                                       
        case DLG_ERR:       
            nId   = ISERR_GEN_FAILURE;
            SdError(nId, DLG_MYDLG);
bDone = TRUE;   
           
        case DLG_CLOSE:             
            SdCloseDlg(hDlg, nId, bDone);  
           
        default:
            // check standard handling
            if (SdIsStdButton(nId) && SdDoStdButton(nId)) then
                bDone = TRUE;
            endif;
                                           
        endswitch;
    endwhile;
end;


7.setup.url
内容:
//
添加的内容是 #include "MyDlg.rul"
//
以及我们自定义的对话框。其他的代码都是自动生成的。
// First Install UI Sequence - Before Move Data
//
// The OnFirstUIBefore event is called by OnShowUI when the setup is
// running in first install mode. By default this event displays UI allowing
// the end user to specify installation parameters.
//
// Note: This event will not be called automatically in a
// program...endprogram style setup.
//---------------------------------------------------------------------------
#include "MyDlg.rul"
function OnFirstUIBefore()
    number nResult, nLevel, nSize, nSetupType;
    string szTitle, szMsg, szOpt1, szOpt2, szLicenseFile;
    string szName, szCompany, szTargetPath, szDir, szFeatures;
    BOOL    bLicenseAccepted;   
begin       
    nSetupType = COMPLETE;   
    szDir = TARGETDIR;
    szName = "";
    szCompany = "";
    bLicenseAccepted = FALSE;
// Beginning of UI Sequence
Dlg_Start:
    nResult = 0;

Dlg_SdWelcome:
    szTitle = "";
    szMsg = "";
    //{{IS_SCRIPT_TAG(Dlg_SdWelcome)
    nResult = SdWelcome( szTitle, szMsg );
    //}}IS_SCRIPT_TAG(Dlg_SdWelcome)
    if (nResult = BACK) goto Dlg_Start;
Dlg_Hello:
我们自定义的对话框
    szTitle="";   
    szMsg="It's my hello DLG";
    nResult=MyDlg(szMsg);
    if (nResult=BACK) goto Dlg_Start;

。。。。

Dlg_SdRegisterUser:
    szMsg = "";
    szTitle = "";
    //{{IS_SCRIPT_TAG(Dlg_SdRegisterUser)   
   // nResult = SdRegisterUser( szTitle, szMsg, szName, szCompany );
    //}}IS_SCRIPT_TAG(Dlg_SdRegisterUser)
    if (nResult = BACK) goto Dlg_MyDlg;

。。。。


编译运行就可以看到自己的对方框了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值