01.04.2015 Views

PHOTOMOD VectOr - Racurs

PHOTOMOD VectOr - Racurs

PHOTOMOD VectOr - Racurs

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>VectOr</strong><br />

Если прикладная задача разрабатывается на Visual C++, то вместо "_export"<br />

необходимо записать "__declspec(dllexport)".<br />

При написании приложения в Delphi может применяться следующая запись.<br />

procedure GetInterfaceVersion; stdcall; export;<br />

Эта функция всегда вызывается перед запуском задачи для сравнения версии<br />

библиотеки MAPACCESS, используемой при написании задачи, и версии библиотеки,<br />

реально установленной в системе. Если версии различаются - задача не будет<br />

выполняться. В этом случае необходимо перетранслировать приложение. Переменная<br />

MAPACCESSVERSION объявлена в файле mapapi.h.<br />

Если прикладная задача для работы с картой использует только функции<br />

интерфейса MAPAPI (не использует классы C++ из библиотеки mapacces), то<br />

возвращаемое значение может равняться 0.<br />

Кроме этой функции задачи первого типа должны иметь функцию вида:<br />

extern "C"<br />

{<br />

long int _ export WINAPI CallMapFunction(long int hmap, TASKPARM * parm);<br />

{<br />

...<br />

}<br />

}<br />

Переменная hmap содержит идентификатор открытой карты. Для задач на С++<br />

эта переменная может быть преобразована к типу (TMapAccess *). Структура<br />

TASKPARM описана в файле mapapi.h.<br />

typedef struct TASKPARM // ПАРАМЕТРЫ ПРИКЛАДНОЙ ЗАДАЧИ<br />

{<br />

long int Language;<br />

// Код языка диалогов (1 -ENGLISH,<br />

// 2 - RUSSIAN, ...)<br />

HINSTANCE Resource; // Модуль ресурсов приложения<br />

const char * HelpName; // Полное имя файла ".hlp"<br />

const char * IniName; // Полное имя файла ".ini" приложения<br />

const char * PathShell; // Каталог приложения (exe,dll,...)<br />

const char * ApplicationName; // Имя приложения<br />

HWND Handle; // Идентификатор главного окна приложения<br />

}<br />

TASKPARM;<br />

Задачи второго типа должны разрабатываться с помощью транслятора Borland<br />

C++ версии 5.02 и выше, так как они используют механизм экспорта классов языка<br />

С++. Но в ходе их выполнения могут использоваться компоненты, разработанные с<br />

помощью других языков программирования.<br />

Кроме функции "GetInterfaceVersion()" задачи второго типа должны содержать<br />

функцию вида:<br />

extern "C"<br />

{<br />

TMapTask * WINAPI_export GreateMapTask(TMapWindow * mapwindow)<br />

{<br />

TMapTask * task<br />

try<br />

{<br />

task = new UserClass(mapWindow);<br />

}<br />

catch<br />

{<br />

task=0;<br />

}<br />

return task;<br />

}<br />

}<br />

79 РАКУРС, 129366, Москва, ул. Ярославская, д.13-А

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!