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:
- Load the DCL file with a
load_dialog call.
- 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.
- 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.
- Call
start_dialog to turn control over to the dialog box, so that the user can enter input.
- 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.