Well, really it was my lack of knowledge that was the problem. Like I said, I was trying to start another dialog by clicking a button on my first dialog. Before, I was doing this:
(defun c:eu ()
(setq dcl_id (load_dialog "elevutil.dcl"))
(if (not (new_dialog "eu_main" dcl_id)) (exit))
(action_tile "cancel" "(done_dialog)")
(action_tile "fascia" "(done_dialog)(eu_fascia)")
(action_tile "endcap" "(done_dialog)(eu_endcap)")
(action_tile "hip" "(done_dialog)(eu_hip)")
(action_tile "gable" "(done_dialog)(eu_gable)")
(action_tile "roofline" "(done_dialog)(eu_roofline)")
(action_tile "quoin" "(done_dialog)(eu_quoin)")
(start_dialog)
(unload_dialog dcl_id)
(princ)
)
All of the eu_ functions that I was calling, except for eu_quoin, didn't require a new dialog because the eu_main dialog has edit boxes for all the global variables for them. My quoin function requires some specific variables. So, eu_quoin starts another dialog box, which is where my problem was. I'm guessing that because I was basically calling start_dialog in an action_tile, the first dialog didn't have a chance to close before the new dialog started, but the done_dialog had been called already so it assumed it was closed. Clear as mud, right? Here was my answer:
(defun c:eu ()
(setq dcl_id (load_dialog "elevutil.dcl"))
(setq main_flag 1)
(while (> main_flag 0)
(if (not (new_dialog "eu_main" dcl_id)) (exit))
(action_tile "cancel" "(done_dialog 0)")
(action_tile "fascia" "(done_dialog 1)")
(action_tile "endcap" "(done_dialog 2)")
(action_tile "hip" "(done_dialog 3)")
(action_tile "gable" "(done_dialog 4)")
(action_tile "roofline" "(done_dialog 5)")
(action_tile "quoin" "(done_dialog 6)")
(setq main_flag (start_dialog))
(cond
((= main_flag 1) (eu_fascia))
((= main_flag 2) (eu_endcap))
((= main_flag 3) (eu_hip))
((= main_flag 4) (eu_gable))
((= main_flag 5) (eu_roofline))
((= main_flag 6) (eu_quoin)))
)
(unload_dialog dcl_id)
(princ)
)
I'm using the return code of done_dialog to determine which function to call long after the dialog is closed. Also the dialog will reopen when the functions are finished. (Thanks to Afralisp for that find) This code is far from being finished, I'm just looking for usability at the moment.