LRESULT
Определение типа LRESULT отображается в файле mcadincl.h. MyCFunction представляет код, который выполняет пользовательскую функцию. Аргументы PTC Mathcad и указатель на возвращаемое значение передаются в эту функцию. Это задает помещение результата расчета в возвращаемое значение.
LRESULT MyCFunction(returnValue, argument1,...)
void * const returnValue;
const void * const argument1;
...
Параметр
Описание
returnValue
Указывает на структуру COMPLEXARRAY, COMPLEXSCALAR или MCSTRING, в которой будет сохранен результат функции.
Если реализуется пользовательская функция, которая возвращает скаляр, returnValue является указателем на структуру COMPLEXSCALAR, реализуемую конструкцией LPCOMPLEXSCALAR.
argument1
Указывает на доступную только для чтения структуру COMPLEXARRAY, COMPLEXSCALAR или MCSTRING, в которой сохраняется первый аргумент функции.
Если реализуется пользовательская функция, у которой первым аргументом является скаляр, argument1 является указателем на структуру LPCCOMPLEXSCALAR.
...
Если реализуется пользовательская функция, у которой имеется более одного аргумента, MyCFunction будет иметь дополнительные аргументы, каждый из которых должен иметь один из определенных выше типов. Дополнительные аргументы будут указателями на структуры только для чтения, где сохраняются данные для соответствующего аргумента пользовательской функции.
Требования к параметрам
Массивы и скаляры, которые можно передать в DLL-файл и из него, всегда являются комплексными, а массивы всегда являются двумерными. Можно обратиться к действительной и мнимой частям любого скалярного входного значения с помощью членов ParamName->real и ParamName->imag. Аналогично можно обратиться к действительной и мнимой частям любого входного массива с помощью членов Array->hReal и Array->hImag. Массивы индексируются сначала по столбцу, а затем по строке в отличие от порядка индексов в PTC Mathcad (сначала по строке, затем по столбцу). Все массивы предполагаются двумерными. Чтобы сослаться на вектор, следует задать для первого индекса массива (столбец) значение 0, например:
ArrayName->hReal[0][row], или
ArrayName->hImag[0][row]
Возвращаемое значение
MyCFunction возвращает 0, чтобы показать, что имеет место возврат без ошибки. Чтобы указать на ошибку, MyCFunction возвращает код ошибки в младшем слове возвращенного LRESULT, а в старшем слове номер аргумента, под которым следует поместить окно ошибки. Если старшее слово является нулем, окно сообщения об ошибке помещается непосредственно под функцией.
Дополнительные сведения
MyCFunction является местозаполнителем для имени функции из библиотеки. Вы можете выбрать любое имя для своей функции, но необходимо зарегистрировать адрес выполняемого кода в PTC Mathcad, задав член lpfnMyCFunction структуры FUNCTIONINFO.
Было ли это полезно?