Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / photon_old.doc
Скачиваний:
40
Добавлен:
02.04.2015
Размер:
7.88 Mб
Скачать
          1. Инициализация dll

Обычно DLL определяет функцию инициализации, которую вызывает приложение после того, как оно вызвало функцию dlopen() для загрузки DLL. Функция инициализации Вашей DLL требует полный путь к DLL.

Перед вызовом какого-либо кода PhAB функция инициализации должна вызвать ApAddContext() подобным образом:

ApAddContext(&AbContext, fullpath);

Аргументами здесь являются:

AbContext –

глобальная структура данных, которую PhAB перемещает в abmain.c

Эта структура имеет одно и то же имя во всех приложениях PhAB или DLL, так что Вы должны линковать Вашу DLL с опцией -Bsymbolic, как упомянуто выше.

fullpath –

полный путь к DLL, подходящий для передачи в функцию open().

Вы можете вызвать функцию ApAddContext() более одного раза, но Вы должны отслеживать, как много раз Вы её вызывали.

ApAddContext() возвращает 0 в случае успешного выполнения или –1 при неудаче. Не выполняйте вызов какой бы то ни было функции Ap*, если вызов функции ApAddContext() завершился неудачей.

          1. Выгрузка Вашей dll

Когда приложение готово выгрузить DLL, оно обычно вызывает в DLL функцию очистки. В функции очистки Вашей DLL Вы должны:

  • Закрыть все базы данных виджетов, открывавшиеся Вашей DLL

  • Уничтожить все виджеты PhAB, принадлежащие Вашей DLL

  • Если Ваша DLL определила классы виджетов, вызвав функцию ApAddClass(), удалить их, вызвав функцию ApRemoveClass()

  • Вызвать функцию ApRemoveContext() подобным образом:

ApRemoveContext(&AbContext);

Вы должны вызвать ApRemoveContext() столько раз, сколько раз Вы успешно вызывали ApAddContext(). После того как Вы вызвали ApRemoveContext(), Ваша DLL не должна вызывать какие-либо функции PhAB.

  1. Глава 9. Работа с программным кодом

PhAB делает простым создание пользовательского интерфейса с приложением. Как только PhAB сгенерировал заготовки программного кода для Вашего приложения, Вам необходимо написать ту часть, которая делает приложение что-то выполняющим. Эта глава описывает, как работать с программным кодом для приложения PhAB.

Она включает следующие разделы:

  • Переменные и декларации

  • Глобальный хеадер-файл

  • Имена функций и файлов

  • Функция инициализации

  • Установочные функции модулей

  • Функции ответных реакций кодового типа

  • Типы данных о геометрии

  • Таймеры

  • Меню инициализации

  • Задержка обновления и принудительное обновление экрана

 Для получения информации об использовании в программе Photon нитей см. раздел "Параллельные операции".

    1. Переменные и декларации

          1. Переменные и декларации виджетов

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

Глобальная переменная представляет имя виджета и определена в файле abvars.h. Каждая глобальная переменная принимает такую форму:

  • ABN_widget_name – где widget_name является именем виджета или именем экземпляра модуля, который Вы определили в панелях управления ресурсами или ответными реакциями. Значение этой переменной является уникальным в пределах всего приложения.

Декларация представляет указатель на экземпляр виджета и определена а файле abdefine.h. Этот файл, который включается во все файлы с кодом на языке С Вашего приложения, также определяет внешнюю ссылку на глобальные переменные. Каждая декларация принимает такую форму:

  • ABW_widget_name – где widget_name является именем виджета или именем экземпляра модуля, который Вы определили в панелях управления ресурсами или ответными реакциями.

 PhAB не создаёт декларации ABW_... для модулей меню или пунктов меню. Обычно меню не живут достаточно долго, так что декларации для них не очень-то полезны. Если Вам необходимо изменять ресурсы PtMenu, создайте установочную функцию для модуля меню и делайте работу там. См. раздел "Установочные функции модулей" ниже.

Когда PhAB обнаруживает уникальное имя экземпляра, он генерирует имя глобальной переменной и декларацию виджета. Например, если Вы изменили имя экземпляра виджета класса PtButton – на "done", PhAB сгенерирует следующее:

  • ABN_done

  • ABW_done

 Глобальная переменная и декларация виджета будут иметь силу только после того как виджет будет создан, и до тех пор, пока не будет уничтожен.

Соседние файлы в папке Литература