Example: Requesting a Password (DCL)

This example demonstrates how to use a simple dialog box to request a password from users.

Note: The password_char attribute for the edit_box tile is supported on Windows only.

The following defines a dialog box named passdlg, which contains two tiles: the edit_box tile where the user enters the password, and the ok_cancel tile. It uses the password_char DCL attribute to mask the text a user enters:

// GETPASS.DCL
//
passdlg : dialog
{
  label = "Password Protected";
  : edit_box
  {
    label = "Password:";
    edit_width = 20;
    key = "password";
    password_char = "?";
  }
  ok_cancel;
}

The following defines a function named GETPASS. This function loads the getpass.dcl file and displays the passdlg dialog box. When a user enters text into the edit box, it is masked by the password_char character defined in the DCL file. The action assigned to the edit box ensures that the characters entered by the user are set to the pass variable:

;; GETPASS.LSP
;;
(defun GETPASS ( / dcl_id pass )
  (setq dcl_id (load_dialog "getpass.dcl"))
  (if (new_dialog "passdlg" dcl_id)
    (progn
      (action_tile "password" "(setq pass $value)")
      (start_dialog)
      (unload_dialog dcl_id)
    )
    (princ "Error: Unable to load GETPASS.DCL. ")
  )
  pass
)

The GETPASS function returns the string entered by the user.