InstallShield自定義對話框淺談(二)

二、 根據輸入控制對話框上控件的有效性
在自定義了一個對話框之後,可能需要對對話框上的控件之間的關係進行一些控制,比如當選中了某單選框後,使一些控件有效,而選中其他的單選框後,另一些控件有效等等。要實現這些功能,就需要手動編寫InstallShield腳本來實現了。
下面是一個在安裝嚮導中添加了一個自定義對話框,在該步驟中實現在安裝的時候在本機器上添加一個SQL Server的數據源。圖“自定義對話框效果圖”是該自定義對話框的運行效果圖:
 

在該自定義對話框中,除了要完成配置SQL Server的數據源之外,還要完成其他一些輔助功能。爲了在本機器上配置一個SQL Server數據源,需要輸入該數據源的名稱、該數據源是針對那個服務器的以及配置的是用戶數據源還是系統數據源等數據,而數據庫和服務器用戶及口令則是完成輔助功能所需要的。只有當輸入了必須的數據(如:服務器、數據庫、用戶名稱、數據源等)之後,按鈕“下一步”纔能有效,爲了達到這個要求,就需要對用戶的輸入進行判斷,在InstallShield中可以用WaitOnDialog來得到當前對話框的事件。下面是完成該功能的一個完整腳本代碼:

///////////////////////////////////////////////////////////////////////
// kdcis.rul
//
///////////////////////////////////////////////////////////////////////

#ifndef __KDCIS_RUL_
#define __KDCIS_RUL_

#include "winsysdll.h"
 //
 // Pre-defined script dialog constants
 //   

             // ----- Attribute Dialog Controls ------
#define DLG_DSN_SQLSERVER    30001

#define IDC_RADIO_DSN_USER    1001
#define IDC_RADIO_DSN_SYSTEM   1002
#define IDC_EDIT_DB_ADDR                1003
#define IDC_EDIT_SQLSERVER_USER_NAME 1004
#define IDC_EDIT_SQLSERVER_USER_PWD 1005
#define IDC_EDIT_SQLSERVER_DSN   1006
#define IDC_EDIT_SQLSERVER_DB   1007

        file://----------------------
        // Function prototypes
        file://----------------------


///////////////////////////////////////////////////////////////
// 顯示配置SQLSERVER數據源對話框
// 參數:
//    BOOL bFirstStep:是安裝的第一步嗎?
//    BOOL bAllowNotSet:是否允許跳過本次設置
//    BYVAL STRING szTitle:對話框的標題
///////////////////////////////////////////////////////////////
prototype BuildSQLServerDSN(BOOL, BOOL, BYVAL STRING);


///////////////////////////////////////////////////////////////
// 校驗配置數據源對話框的輸入有效性
// 參數:
//    HWND hwndDlg:配置對話框的句柄,從CmdGetHwndDlg中得到
//    BOOL bAllowNotSet:是否允許跳過本次設置
// 備註:
//    CheckSQLServerDSNInputValid:對SQLSERVER數據源配置進行校驗
//////////////////////////////////////////////////////////////
prototype CheckSQLServerDSNInputValid(HWND, BOOL);
      
        file://----------------------
        // Variable declaration
        file://---------------------- 
       
        file://----------------------
        // Macro declaration
        file://----------------------
#define DSN_SQLSERVER_DLG "ConfigSQLServerDSNDLG"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章