Интерфейс настройки панели прикладной задачи |
Система электронных карт Панорама поддерживает возможность создания и настройки пользовательских панелей инструментов. Панель может быть создана из доступных кнопок, как оболочки Панорамы, так и ее прикладных задач, поддерживающих интерфейс настройки панелей. Интерфейс настройки представляет собой набор функций, которые должны экспортироваться прикладной задачей системы Панорама. Эти функции предоставляют оболочке доступ к такой информации о задаче, как: - название задачи; - количество панелей инструментов в задаче; - названия панелей; - количество кнопок в панелях; - названия кнопок в панелях; - идентификаторы кнопок (изображение в формате DDB). Итак, прикладная задача системы электронных карт ГИС Панорама должна экспортировать следующие функции: char* userGetTaskName(long language); где: language - код языка возвращаемой строки (см. maptype.h). Функция возвращает название задачи на языке language, в случаи ошибки возвращает строку нулевой длинны. Размер возвращаемой строки желательно ограничивать 32-я символами. long userGetPanelCount (); Функция возвращает количество доступных панелей или 0 при ошибке. const char* userGetPanelName(long panel, long language); где: panel - номер панели в задаче начиная с 1 и т.д., language - код языка возвращаемой строки (см. maptype.h). Функция возвращает название панели, в случае ошибки возвращает строку нулевой длинны. Размер возвращаемой строки желательно ограничивать 32-я символами. long userGetPanelButtonCount(long panel); где: panel - номер панели в задаче начиная с 1 и т.д. Функция возвращает количество доступных кнопок в панели или 0 при ошибке. long userGetPanelButtonResID(long button, long panel); где: button - номер кнопки в панели начиная с 1 и т.д., panel - номер панели в задаче начиная с 1 и т.д. Функция возвращает идентификатор кнопки в панели или 0 при ошибке. const char* userGetPanelButtonName(long number, long panel, long language); const WCHAR * userGetPanelButtonNameUn(long number, long panel, long language); где: button - номер кнопки в панели начиная с 1 и т.д., panel - номер панели в задаче начиная с 1 и т.д., language - код языка возвращаемой строки (см. maptype.h) Функция возвращает название кнопки, в случаи ошибки возвращает строку нулевой длины. Размер возвращаемой строки желательно ограничивать 32-я символами.
const char* userGetButtonName(long id, long panel); const WCHAR* userGetButtonNameUn(long id, long panel); где: id - идентификатор кнопки, panel - номер панели в задаче начиная с 1 (параметр не используется). Функция возвращает название кнопки, в случаи ошибки возвращает строку нулевой длины. Размер возвращаемой строки желательно ограничивать 32-я символами. Применение данных функций демонстрируется в файле RSWEDIT.CPP, который содержится в папке \SDK12\RSWEDIT примеров разработки приложений в ГИС "Панорама" 12. Для создания прикладными задачами собственных панелей инструментов, работающих под управлением системы Панорама, в интерфейсе PANAPI реализован набор функций позволяющих: - создать стандартную панель инструментов задачи; - создать пустую панель инструментов; - добавить/вставить кнопку в панель; - переместить панель инструментов; - удалить кнопку из панели; - изменить картинку на кнопке и т.д. virtual int CreateTaskPanel(int panel = 1); где: panel – номер панели в задаче (см. выше userGetPanelCount()). Функция создает стандартную панель прикладной задачи и возвращает ее идентификатор или 0 при ошибке. Обычно эта функция вызывается системой Панорама при запуске прикладной задачи, и должна быть переопределена в модуле этой задачи. int CreatePanel(HINSTANCE hInst, const char* name); int CreatePanel(HINSTANCE hInst, const WCHAR* name); где: hInst - идентификатор модуля содержащего ресурсы кнопок, name - заголовок панели. Функция создает пустую панель инструментов и возвращает ее или 0 при ошибке. int InsertButton(int panelID, int bmpFace, int command, int after = 0); где: panelID - идентификатор ранее созданной панели, bmpFace - идентификатор изображения кнопки из ресурсов, command - идентификатор кнопки, если 0 - разделитель, after - идентификатор существующей кнопки, после которой вставляется кнопка, если 0 - в конец панели. Функция вставляет кнопку в существующую панель и возвращает ее идентификатор command или 0 при ошибке. int DeleteButton(int panelID, int command); где: panelID - идентификатор ранее созданной панели, command - идентификатор удаляемой кнопки. Функция удаляет кнопку из существующую панель и возвращает 1 или 0 при ошибке. int MovePanel(int panelID, RECT rect, int position, int layout = 1); где: panelID - идентификатор ранее созданной панели, rect - координаты нового положения панели, position - расположение панели в окне: 0 - плавающая; 1 - в верхней части окна; 2 - в нижней части окна; 3 - в левой части окна; 4 - в правой части окна; layout - признак немедленного обновления окна Функция сдвигает панель в указанное место и возвращает 1 или 0 при ошибке. int SetButtonFace(int panelID, int command, HBITMAP bmpFace); где: panelID - идентификатор ранее созданной панели, command - идентификатор кнопки, bmpFace - идентификатор нового изображения кнопки. Функция изменяет картинку на кнопке с идентификатором command в панели panelID , или во всех панелях системы если panelID = 0, и возвращает command или 0 при ошибке. int SetButtonFacePNG(int panelID, int command, int pngid); где: panelID - идентификатор ранее созданной панели, command - идентификатор кнопки, pngid - идентификатор новой кнопки формата PNG. Функция изменяет картинку на кнопке с идентификатором command в панели panelID , или во всех панелях системы если panelID = 0, и возвращает command или 0 при ошибке. virtual int PanelCanClose(int panelID); где: panelID - идентификатор ранее созданной панели, Функция вызывается системой Панорама, как запрос на закрытие панели инструментов panelID, и должна быть переопределена в модуле этой задачи. virtual int PanelRightUp(int panelID, POINT * point); где: panelID - идентификатор панели point - положение курсора на экране Функция вызывается системой Панорама в момент отпускания правой кнопки мыши над панелью panelID, и должна быть переопределена в модуле этой задачи, например для вызова всплывающего меню. Применение данных функций демонстрируется в файле RSWEDIT.CPP, который содержится в папке \SDK12\RSWEDIT примеров разработки приложений в ГИС "Панорама" 12. |