Интерфейс настройки панели прикладной задачи

Печать Предыдущая страница Стартовая страница

Система электронных карт Панорама поддерживает возможность создания и настройки пользовательских панелей инструментов. Панель может быть создана из доступных кнопок, как оболочки Панорамы, так и ее прикладных задач, поддерживающих интерфейс настройки панелей.

Интерфейс настройки представляет собой набор функций, которые должны экспортироваться прикладной задачей системы Панорама. Эти функции предоставляют оболочке доступ к такой информации о задаче, как:

- название задачи;

- количество панелей инструментов в задаче;

- названия панелей;

- количество кнопок в панелях;

- названия кнопок в панелях;

- идентификаторы кнопок (изображение в формате 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.