ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Принятие параметров в функциях обратного вызова


В функции повторного вызова, значение и данные отобранного неперекрывающего расположения пропускают как параметр пакета повторного вызова, как показано на определении функции повторного вызова более раннего примера:

static void CALLB accept_OK(ads_callback_packet *cpkt)

{

// DLGOK == User pressed OK.

//

ads_done_dialog(cpkt->dialog, DLGOK);

}

CALLB символ, который появляется перед именем функции,  определен как пробел.

Это - просто маркер, чтобы делать это проще для Вас, чтобы расположить функции повторного вызова, когда Вы поддерживаете вашу программу. Однако, Вы должны всегда использовать это в случае, если это определено по-другому в будущем выпуске.

Предшествующий пример просто закрывает диалоговое окно, используя только один из параметров в пакете. Тип данных пакета повторного вызова определен следующей инструкцией:

typedef struct {

ads_hdlg dialog;

ads_htile tile;



char *value;

void *client_data;

int reason;

long x, y;

} ads_callback_packet;

Параметры прошли в пакете, имеют следующие цели:

!!!!     Неперекрывающее расположение  ßreà  tile

dialog

Метка диалогового окна.

tile

Метка отобранного неперекрывающего расположения. Вместо принятия ключа отобранного  неперекрывающего расположения, пакет PDB передает функции повторного вызова метку неперекрывающего расположения (типа ads_htile). Вы используете метку, чтобы отыскать атрибуты неперекрывающего расположения, включая его ключ, вызывая функцию ads_get_attr_string () (. Ads_get_attr_string () функция не имеет копии AutoLISP.)

value

Строка, которая содержит значение отобранного неперекрывающего расположения. Пространство для этой строки управляется в соответствии с AutoCAD; обращайтесь с этим как только для чтения. Если Вы должны изменить значение неперекрывающего расположения, используйте ads_set_tile (). Если неперекрывающее расположение - список (или всплывающий список) и никакой элемент не отобран, строка значения пуста (" ").

client_data

Указатель на специфичные для приложения данные, который был инициализирован ads_client_data_tile (). Если не имеется никаких клиентских данных, это - NULL.

reason

Причина для повторного вызова. Это зависит, на ч действии пользователь брал. Его значение установлено для любого действия, но Вы должны осмотреть это только, когда действие связано с edit_box, list_box, image_button, или неперекрывающим расположением слайдера.

x, y

Когда пользователь выбирает кнопку изображения, они установлены в (X, Y) отобранные координаты. Координаты - координаты неперекрывающего расположения в пределах диапазона, который ads_dimensions_tile () возвратился бы для кнопки изображения.

Например, чтобы отыскать ключ отобранного неперекрывающего расположения, функция повторного вызова могла включать следующий код:

char newtile[TILE_STR_LIMIT];

ads_get_attr_string(cpkt->tile, "key", newtile, TILE_STR_LIMIT);

При поиске строкового значения, убедитесь, что разместили пространство для строки. Этот пример определяет строковую длину,  используя константу TILE_STR_LIMIT.

Ads_get_attr_string () функция может отыскивать другие атрибуты со значением таким же образом, что этот пример отыскивает ключ.



Содержание раздела