DIALOG_PLAYER *init_dialog(DIALOG *dialog, int focus_obj);
This function provides lower level access to the same functionality as do_dialog(), but allows you to combine a dialog box with your own program control structures. It initialises a dialog, returning a pointer to a player object that can be used with update_dialog() and shutdown_dialog(). With these functions, you could implement your own version of do_dialog() with the lines:
DIALOG_PLAYER *player = init_dialog(dialog, focus_obj); while (update_dialog(player)) ; return shutdown_dialog(player);
Note that you are responsible for showing and hiding the mouse cursor, which do_dialog would otherwise do for you, or saving and restoring the screen contents, as popup_dialog would do for you.
update_dialog(3), shutdown_dialog(3), do_dialog(3)
active_dialog(3), DIALOG_PLAYER(3), do_dialog(3), find_dialog_focus(3), shutdown_dialog(3), update_dialog(3).