--- title: "Интерфейс ILibHPObject" type: interface api: [api7] tags: [interface, api7, ilibhpobject] sources: - ilibhpobject.html --- *API экспортных функций > Функции работы с графическим документом  > Создание графических объектов  > Работа с макроэлементами и библиотечными макроэлементами  > Работа с характерными точками * ## Интерфейс ILibHPObject Интерфейс управления характерными точками библиотечного объекта 2D. Иерархия: IUnknown ILibHPObject ILibHPObject1 Описание. Посредством вызова метода IUnknown::QueryInterface (const GUID far& IID, void** pif) у данного интерфейса можно получить дополнительный интерфейс ILibHPObject1 - интерфейс для работы с характерными точками. Интерфейс должен быть реализован на стороне библиотеки разработчиком приложения, если необходимо обеспечить управление характерными точками библиотечного элемента 2D. Режим поддержки интерфейса управления характерными точками включается в функции ksSetMacroParam. Вызывается КОМПАС при селектировании библиотечного элемента 2d через функцию LibObjInterfaceEntry. Является обработчиком событий, генерирующихся КОМПАС при селектировании библиотечного элемента. Интерфейс позволяет выполнить следующие действия. – Сформировать отображение характерных точек, задав координаты характерных точек. – Задать тексты характерных точек. – Задав идентификаторы курсора, изменить отображение курсора и его текст при попадании указателя мыши в габарит точки. – Получить выпадающее меню, ассоциированное с данным библиотечным элементом. – Отработать события начала смещения, смещения и конца смещения характерных точек. – Выполнить команду библиотечного меню. Интерфейс реализован еще до реализации механизма событий в КОМПАС API. Отличие состоит в том, что передача интерфейса КОМПАС осуществляется не через подписку а посредством предопределенной функции LibObjInterfaceEntry. Передача интерфейса КОМПАС может быть осуществлена из библиотеки, установленной в функции ksSetMacroParam. ## LibHotPnt_Complete - Завершить редактирование методом перетаскивания характерных точек Синтаксис: ``` BOOL LibHotPnt_Complete(int index, BOOL success); Входные параметры: index - номер характерной точки, success - признак завершения сдвига характерной точки: TRUE - нормальное завершение, FALSE - во время сдвига нажата . Возвращаемое значение: TRUE - в случае удачного завершения. ``` Описание: Этот метод позволяет отработать событие окончания перетаскивания характерной точки c нажатой левой кнопкой мыши. Библиотека может изменить отображение библиотечного элемента или выполнить другие действия, связанные с этим событием. ## LibHotPnt_ExecuteCommand - Выполнить команду из меню, присланного по LibHotPnt_GetMenu() Синтаксис: ``` BOOL LibHotPnt_ExecuteCommand(int id); Входной параметр: id - идентификатор команды контекстного меню. Возвращаемое значение: TRUE - что-то изменилось и требуется передача в UNDO и пересчет положения характерных точек, FALSE - команда не обработана. ``` Описание: Этот метод позволяет отработать событие выбора команды контекстного меню, полученного методами ILibHPObject::LibHotPnt_GetMenu и ILibHPObject1::LibHotPnt_GetMenuEx, и выполнить команду с присланным идентификатором. Выбор команды контекстного меню осуществляется нажатием левой кнопки мыши в габарите команды меню. Библиотека может изменить отображение библиотечного элемента или выполнить другие действия, связанные с этим событием. См также метод LibHotPnt_GetMenu() ## LibHotPnt_Get - Установить текущее описание характерной точки Синтаксис: ``` BOOL LibHotPnt_Get(HotPointDescription* point, int index); Входной параметр: index - номер характерной точки, Выходной параметр: point - структура параметров характерной точки HotPointDescription, Возвращаемое значение: TRUE - в случае удачного завершения. ``` Описание: Метод позволяет задать отображение характерных точек, задав координаты характерных точек, тексты характерных точек, идентификаторы курсора, благодаря чему, можно изменить отображение курсора при попадании указателя мыши в габарит точки. Примечания: 1. Метод вызывается в цикле для каждой точки (увеличивая номер точки), пока не вернет FALSE. 2. Значения координат характерной точки необходимо устанавливать в системе координат макроэлемента. Координаты характерных точек определены в системе координат макроэлемента. ## LibHotPnt_GetCursorText - Задать текст для отображения рядом с курсором Синтаксис: ``` BOOL LibHotPnt_GetCursorText(int index, char** text); Входной параметр: index - номер характерной точки. Выходной параметр: text - текст для отображения рядом с курсором. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: 1. При движении мыши над характерной точкой, можно задать текст у курсора. Метод вызывается при попадании мыши в габарит hot point. 2. С присланной строки снимается копия, сама исходная строка не удаляется. ## LibHotPnt_GetMenu - Задать контекстное меню, ассоциированное с данным библиотечным элементом Синтаксис: ``` int LibHotPnt_GetMenu(); Возвращаемое значение: контекстное меню (HMENU). ``` Описание: Метод вызовется при нажатии правой кнопки мыши на селектированном библиотечном элементе. Метод позволяет получить выпадающее меню, ассоциированное с данным библиотечным элементом. Присланное меню будет модифицировано в системе. Идентификаторы команд должны быть уникальны на уровне приложения. При модификации меню идентификаторы команд становятся уникальными на уровне КОМПАС. Меню будет добавлено в конец системного выпадающего меню для библиотечного элемента. При выборе команды из меню будет вызван метод ILibHPObject::LibHotPnt_ExecuteCommand. Присланное меню будет уничтожено вызовом функции DestroyMenu(). ## LibHotPnt_GetMenuEx - Получить popup-меню, ассоциированное с данным библиотечным элементом и с данной hot-точкой, если index > -1 Синтаксис COM: ``` BOOL LibHotPnt_ViewData( HotPointDescription1 * point, int index ); Входной параметр: index - номер характерной точки. Выходной параметр: point - указатель структуры параметров характерной точки HotPointDescription1. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: 1. При движении мыши над характерной точкой можно задать новое изображение (подсветку) точки и выдать текст у курсора. 2. Метод вызывается при попадании мыши в габарит hot point. 3. При помощи метода можно указать текст, который будет выдан рядом с курсором. Текст выдается для UNICODE вместо ILibHPObject::LibHotPnt_GetCursorText. 4. С присланной строки снимается копия, сама исходная строка не удаляется. 5. Идентификатор нового битмапа характерной точки. Если идентификатор битмапа 0, битмап не меняется. ## LibHotPnt_Prepare - Подготовиться к редактированию методом перетаскивания характерных точек Синтаксис: ``` BOOL LibHotPnt_Prepare(int index); Входной параметр: index - номер характерной точки. Возвращаемое значение: TRUE - в случае удачного завершения. ``` Описание: Этот метод позволяет отработать событие начала перетаскивания характерной точки c нажатой левой кнопкой мыши. Библиотека может изменить отображение библиотечного элемента или выполнить другие действия, связанные с этим событием. ## LibHotPnt_Set - Получить положение характерной точки Синтаксис: ``` BOOL LibHotPnt_Set(HotPointDescription* point, int index ); Входные параметры: index - номер характерной точки, point - структура параметров характерной точки HotPointDescription. Возвращаемое значение: TRUE - в случае удачного завершения. ``` Описание: При перетаскивании характерной точки библиотечного элемента 2D c нажатой левой кнопкой мыши генерируется событие. Этот метод позволяет отработать событие изменения положения характерной точки. Библиотека может изменить отображение библиотечного элемента или выполнить другие действия, связанные с этим событием. Примечания: 1. Актуальны только координаты (x, y), остальные поля должны игнорироваться. 2. Значения координат приходят в собственной системе координат объекта. ## LibHotPnt_ViewData - Получить описание характерной точки при попадании указателя мыши в габарит точки Синтаксис COM: ``` BOOL LibHotPnt_ViewData( HotPointDescription1 * point, int index ); Входной параметр: index - номер характерной точки. Выходной параметр: point - указатель структуры параметров характерной точки HotPointDescription1. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: 1. При движении мыши над характерной точкой можно задать новое изображение (подсветку) точки и выдать текст у курсора. 2. Метод вызывается при попадании мыши в габарит hot point. 3. При помощи метода можно указать текст, который будет выдан рядом с курсором. 4. Текст выдается для UNICODE вместо ILibHPObject::LibHotPnt_GetCursorText 5. С присланной строки снимается копия, сама исходная строка не удаляется. 6. Идентификатор нового битмапа характерной точки. Если идентификатор битмапа 0, битмап не меняется. ## ILibHPObject- методы LibHotPnt_Complete - Завершить редактирование методом перетаскивания характерных точек LibHotPnt_ExecuteCommand - Выполнить команду из меню, присланного по LibHotPnt_GetMenu() LibHotPnt_Get - Установить текущее описание характерной точки LibHotPnt_GetCursorText - Задать текст для отображения рядом с курсором LibHotPnt_GetMenu - Задать контекстное меню, ассоциированное с данным библиотечным элементом LibHotPnt_GetMenuEx - Получить popup-меню, ассоциированное с данным библиотечным элементом и с данной hot-точкой, если index > -1 LibHotPnt_Prepare - Подготовиться к редактированию методом перетаскивания характерных точек LibHotPnt_Set - Получить положение характерной точки LibHotPnt_ViewData - Получить описание характерной точки при попадании указателя мыши в габарит точки