Пример функции ObjectARX
Следующая функция ObjectARX отображает пример:
int showalert()
{
int dcl_id, dbstatus;
ads_hdlg dbhello;
// Load the DCL file.
//
ads_load_dialog("hello.dcl", &dcl_id);
// Initialize the dialog.
//
if (ads_new_dialog("hello", dcl_id, NULLCB, &dbhello) != RTNORM) {
acdbFail("Unable to initialize dialog box called
\"hello\"\n");
return BAD; // Exit if this does not work
}
// Associate an action. End expression with a key, in this
// case, the OK button. End the dialog when OK is pressed.
//
ads_action_tile(dbhello, "accept", accept_OK);
// Display the dialog box.
//
ads_start_dialog(dbhello, &dbstatus);
ads_unload_dialog(dcl_id); // Unload the DCL file
return GOOD;
}
static void CALLB accept_OK(ads_callback_packet *cpkt)
{
// DLGOK == User pressed OK
//
ads_done_dialog(cpkt->dialog, DLGOK);
}
После ads_start_dialog () запрос, диалоговое окно остается активным, пока пользователь не выбирает неперекрывающее расположение (обычно кнопка). Функция ads_action_tile () вызвана, и это вызывает функцию повторного вызова. Параметры к функции повторного вызова включены в отдельную структуру пакета повторного вызова. Повторный вызов вызывает ads_done_dialog ().
Комплексное диалоговое окно требует, больше вызывает к ads_action_tile (), возможно другая инициализация вызывает, и вероятно большее количество ввода, обрабатывающего между ads_start_dialog () и ads_unload_dialog () вызывает. Полная последовательность запроса, тем не менее, остается тем же самый.