Visual FoxPro dynamic-link library (FLL) представляют собой, по сути, DLL, которая содержит вызовы Visual FoxPro API. Вы можете создать базовую структуру DLL в вашей среде разработки и, затем, добавить функции Visual FoxPro, которые вы желаете вызывать. В приведенных ниже разделах описан пример шаблона, для создания шаблонов в C и C++.
Установка шаблона библиотеки
Каждая FLL библиотека Visual FoxPro имеет одну и ту же базовую структуру. Вы можете использоть шаблон структуры, после чего вам нужно будет только добавить код для вашей конкретной процедуры библиотеки.
В шаблоне библиотеки Visual FoxPro имеется пять элементов:
-
Предложение #include.
-
Определение функции.
Определение функции имеет пустое возвращаемое значение и получает параметр
ParamBlk *parm
. Для получения более подробной информации о параметреParamBlk
смотрите описание Параметры во внешних библиотеках. -
Код функции.
-
Структура FoxInfo.
Функции в FLL общаются с Visual FoxPro через структуру FoxInfo. Visual FoxPro uиспользует FoxInfo для определения имени функции и типа параметров.
-
Структура FoxTable.
Структура FoxTable представляет собой список указателей, который отслеживает структуры FoxInfo.
Для получения более подробной информации об опредедениях структур FoxInfo и FoxTable посмотрите содержимое файла Pro_ext.h.
Вы потребуются, кроме того, перечисленные ниже файлы:
-
Заголовочный файл Pro_ext.h.
Вы можете распечатать этот файл для просмотра деклараций функции, определений типов typedefs и структур, используемых в Visual FoxPro API.
-
Файл Winapims.lib.
Оба эти файла размещзены в каталоге Microsoft Visual FoxPro ..\Samples\API.
Образец шаблонов
Для процедур C, вы можете использовать приведенный ниже шаблон:
![]() | |
---|---|
#include <Pro_ext.h> void Internal_Name(ParamBlk *parm) { // Function code goes here. } FoxInfo myFoxInfo[] = { {"FUNC_NAME", (FPFI) Internal_Name, 0, ""}, }; FoxTable _FoxTable = { (FoxTable *)0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |
Для пароцедур C++, вам необходимо декларировать структуру FoxTable как внешнюю в приведенном ниже шаблоне:
![]() | |
---|---|
#include <Pro_ext.h> void Internal_Name(ParamBlk *parm) { // Function code goes here. } FoxInfo myFoxInfo[] = { {"FUNC_NAME", (FPFI) Internal_Name, 0, ""}, }; extern "C" { FoxTable _FoxTable = { (FoxTable *)0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; } |
Смотрите также
Задачи
Как: добавить вызовы Visual FoxPro APIСправочное руководство
Структура FoxInfoСтруктура FoxTable
Прочие ресурсы
API Library ConstructionДоступ к Visual FoxPro API