About the Function Sequence to Display and Work with a Dialog (DCL)

Setting up a DCL dialog box requires the use of several AutoLISP functions that need to be called in a specific order.

The following outlines the typical sequence that needs to be followed to display and use a DCL dialog box:

  1. Load the DCL file with a load_dialog call.
  2. Call new_dialog to display a particular dialog box.

    Be sure to check the value returned by new_dialog. Calling start_dialog when the new_dialog call has failed can have unpredictable results.

  3. Initialize the dialog box by setting up tile values, lists, and images. Initialize also when you call action_tile to set up action expressions or callback functions. Other functions typically called at this time are set_tile and mode_tile for general tile values and states, start_list, add_list, and end_list for list boxes, and the dimension functions with start_image, vector_image, fill_image, slide_image, and end_image for images. At this time you can also call client_data_tile to associate application-specific data with the dialog box and its components.
  4. Call start_dialog to turn control over to the dialog box, so that the user can enter input.
  5. Process user input from within your actions (callbacks). Process input when you are most likely to use get_tile, get_attr, set_tile, and mode_tile. The user presses an exit button, causing an action to call done_dialog, which causes start_dialog to return a value. At this point, unload the DCL file by calling unload_dialog.

    This scheme handles only one dialog box and one DCL file at a time. Applications usually have multiple dialog boxes. The easiest and quickest way to handle these dialog boxes is to save all of them in a single DCL file. The load_dialog call then loads all dialog boxes at once, and you can call new_dialog for any dialog box. If memory is limited, however, you may need to create multiple DCL files and use unload_dialog to remove one set of dialog boxes from memory before you load another set.

    Note: DCL on Mac OS uses more memory than on Windows, unload DCL file definitions that are not needed to avoid running low on memory.