Všechny dialogové boxy v AutoCADu jsou zobrazeny jako modální dialogové boxy. To znamená, že při zobrazení dialogového boxu je umožněno uživateli pouze zadávání parametrů do dialogového boxu, ostatní činnost mimo dialog je zakázaná. V případě potřeby například zadat souřadnice bodu pomocí myši, musíme:
Základní princip skrytí a znovu zobrazení dialogu si ukážeme na fragmentu kódu naší funkce pro zobrazení soustředných kružnic nebo n - úhelníků:
(defun c:SObjekty () (setq co_delat 2) .... (while (>= co_delat 2) (if (not (new_dialog "jméno" id)) ;;; není-li jméno dialogu jméno tak skonči (exit) ) .... (action_tile "jméno_prvku1" "(done_dialog 4)") ;;; je-li zaktivován prvek "jméno_prvku" ;;; zavolej funkci done_dialog s hodnotou 4 (action_tile "accept" "(done_dialog 1)") ;;; je-li zmáčknuto tlačítko "OK" zavolej ;;; funkci done_dialog s hodnotou 1 (action_tile "cancel" "(done_dialog 0)") ;;; je-li zmáčknuto tlačítko "CANCEL" zavolej ;;; funkci done_dialog s hodnotou 0 (setq co_delat (start_dialog)) ;;; nastaví proměnnou co_delat na hodnotu získanou od funkce ;;; start_dialog (hodnota s kterou končí funkce done_dialog) (cond ;;; určení další činnosti ((= co_delat 0) ("funkce0 obsluhující přerušení dialogu")) ;;; uživatel stornoval dialog = konec funkce ((= co_delat 1) ("funkce1 obsluhující potvrzení dialogu")) ;;; uživatel potvrdil dialog, zavolej funkci (vykresli) ((= co_delat 4) ("funkce4 obsluhující akci prvku jméno_prvku")) ;;; uživatel zaktivoval prvek "jméno_prvku" reaguj na akci ) ) (unload_dialog id) ;;; odstraní dialog id z paměti )
Z uvedené části kódu je patrné, že princip spočívá v použití příkazu done_dialog s parametrem, příkazu start_dialog, proměnné co_delat a smyčky while.
Při startu funkce je nejprve nastavena proměnná co_delat na hodnotu 2 (znamená setrvej ve smyčce). Program vstoupí do smyčky while, done_dialog nastaví všechny prvky dialogu a příkazem start_dialog zobrazí dialog. V tomto stavu setrvá až do aktivace prvku "jméno_prvku1", kdy je zavolán příkaz done_dialog s parametrem určujícím další činnost, který ukončí dialogový box. Příkaz star_dialog je zastaven a do proměnné co_dělat vrátí hodnotu, s kterou byl vyvolán příkaz done_dialog ( v našem případě 4).
Dále je testována podmínka cond . Spustí se přiřazená funkce funkce4. Po jejím skončení se běh programu vrátí na začátek smyčky, je zkontrolována správnost načteného dialogu a dialog je opět zobrazen příkazem start_dialog. Tato činnost se opakuje do té doby než je vyvolána funkce done_dialog s parametrem < 2.
Standardní přiřazení hodnot parametru u funkce done_dialog:
Při vyvolání funkce done_dialog s výše uvedenými hodnotami dojde k vyvolání příslušných akcí. Běh funkce vyskočí ze smyčky a dialogový box je odstraněn z paměti.