/**** GISDLGS.H *************** Belenkov O.V. ********* 22/05/17 ***

***** GISDLGS.H *************** Panteleeva N.A. ******* 30/07/13 ***

***** GISDLGS.H *************** Tarakanova I.R. ******* 16/10/14 ***

***** GISDLGS.H *************** Derevyagina Zh.A. ***** 15/03/17 ***

***** GISDLGS.H *************** Konon V.N.     ******** 08/04/15 ***

***** GISDLGS.H *************** Alexeev S.A.  ********* 31/01/13 ***

***** GISDLGS.H *************** Shabakov D.A.  ******** 22/03/17 ***

*                                                                  *

*              Copyright (c) PANORAMA Group 1991-2017              *

*                      All Rights Reserved                         *

*                                                                  *

********************************************************************

*                                                                  *

*          СТАНДАРТНЫЕ ДИАЛОГИ ДЛЯ ПРИЛОЖЕНИЙ НА GIS ToolKit       *

*                                                                  *

*                 ПРИМЕР ВЫЗОВА ДИАЛОГА:                           *     

*                                                                  *

*                                                                  *

*   // Загрузка библиотеки из ГИС приложений                       *

*   HINSTANCE libInst = ::LoadLibrary("gisu64dlgs.dll");           *

*   // Загрузка библиотеки из задач ГИС Панорама                   *

*   HINSTANCE libInst = ::LoadLibrary("mapscena.dll");             *

*                                                                  *

*   // Вызов функции                                               *

*   typedef long int (WINAPI * INSERTPOINTS)(HMAP hMap,            *

*                                            TASKPARMEX* parm,     *

*                                            HOBJ info,            *

*                                            RECT * rect);         *

*                                                                  *

*   INSERTPOINTS InsertPoints = (INSERTPOINTS)                     *

*                   GetProcAddress(libInst, "tedInsertPoints");    *

*                                                                  *

*   long int Rezult = (*InsertPoints)(hMap, parm, info, 0);        *

*                                                                  *

*   // Выгрузка библиотеки                                         *

*   ::FreeLibrary(libInst);                                        *

*                                                                  *

*******************************************************************/

 

#ifndef GISDLGS_H

#define GISDLGS_H

 

#ifndef ALSAPI_H        

  #include "alsapi.h"

#endif

 

#if defined(_M_X64) || defined(BUILD_DLL64)      

typedef __int64   HBUILDPROFIL; // ИДЕНТИФИКАТОР ОТКРЫТОГО ДИАЛОГА

                                // ПОСТРОЕНИЯ ПРОФИЛЯ

 

typedef __int64   HSTATOBJ;     // ИДЕНТИФИКАТОР ОТКРЫТОГО ДИАЛОГА

                                // СПРАВКА ОБ ОБЪЕКТЕ

 

typedef __int64   HSEMANT;      // ИДЕНТИФИКАТОР ОТКРЫТОГО ДИАЛОГА

                                // РЕДАКТИРОВАНИЕ СЕМАНТИКИ

 

typedef __int64   HMCLCALC;     // ИДЕНТИФИКАТОР ОТКРЫТОГО ДИАЛОГА

                                // КАЛЬКУЛЯТОР

 

#else

typedef long int  HBUILDPROFIL; // ИДЕНТИФИКАТОР ОТКРЫТОГО ДИАЛОГА

                                // ПОСТРОЕНИЯ ПРОФИЛЯ

 

typedef long int  HSTATOBJ;     // ИДЕНТИФИКАТОР ОТКРЫТОГО ДИАЛОГА

                                // СПРАВКА ОБ ОБЪЕКТЕ

  

typedef long int  HSEMANT;      // ИДЕНТИФИКАТОР ОТКРЫТОГО ДИАЛОГА

                                // РЕДАКТИРОВАНИЕ СЕМАНТИКИ

 

typedef long int  HMCLCALC;     // ИДЕНТИФИКАТОР ОТКРЫТОГО ДИАЛОГА

                                // КАЛЬКУЛЯТОР

#endif

 

// Структура для выбора информации по семантикам объектов   

typedef struct SELECTOBJLIST

{

  char * Caption;           // Заголовок диалога

  long PluralFlag;          // 1 - множественный выбор

  long Left;                // Левый

  long Top;                 // Верхний угол диалога

  long Height;              // Высота

  long Width;               // Ширина диалога (если заданы ширины столбцов - не учитывается)

  long FirstWidth;          // Ширина первой колонки,содержащей название объекта по-классификатору

                            // (пикселы) ширина = 0 - столбец не выводим, ширина = -1 расчитываем

  long SemCount;            // Количество выводимых семантик (не более 10)

  long * SemCode;           // Указатель на массив кодов семантик

  long * ColWidth;          // Указатель на массив ширин столбцов

                            // (пикселы) ширина = 0 - не выводим, ширина = -1 расчитываем

                            // Если ColWidth == 0, размер колонок рассчитывается

}

SELECTOBJLIST;

 

// Заголовок к списку объектов листа

typedef struct SELECTOBJINFO

{

  HMAP HMap;       // идентификатор открытой карты

  HSITE HSite;     // идентификатор открытой пользовательской карты

  long ListNumber; // Номер листа (если карта - site 0)

  long Number;     // Номер объекта в листе

  long Flag;       // При входе 0, при выходе 1, если объект выбран

  long Reserve;    // Резерв                           

}

SELECTOBINFO;

 

#define ALS_NO_CHOICE_ATLAS 1 

#define ALS_NO_SEND_MESSAGE 2 

 

extern "C"

{

 

 // Диалог "Редактирование метрики объекта"

 // hmap    - идентификатор открытой карты

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // info    - идентификатор редактируемого объекта

 // rect    - местоположение открываемого диалога или 0

 // Вызов файла справки из Mapscena.chm ("ENPOINT")

 // При ошибке возвращает ноль

 

 long int WINAPI tedInsertPoints(HMAP hmap, TASKPARMEX *parm, HOBJ info, RECT *rect);

 

 // Диалог "Редактирование семантики объекта"

 // hmap    - идентификатор открытой карты

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // info    - идентификатор редактируемого объекта

 // Вызов файла справки из Mapscena.chm ("SOKOL")

 // При ошибке возвращает ноль

 

 long int WINAPI tedEditSemantic(HMAP hmap, TASKPARMEX *parm, HOBJ info);

 

 // Диалог "Обновление семантики объектов"

 // hmap    - идентификатор открытой карты

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // Вызов файла справки из Mapscena.chm ("ZAMSEM")

 // При ошибке возвращает ноль

 

 long int WINAPI tedUpdateSemantic(HMAP hmap, TASKPARMEX *parm);

 

 // Диалог "Редактирование семантики типа "Дата"

 // value   - адрес строки, содержащей дату в виде ДД/ММ/ГГГГ

 //           (строка исходная и в неё же записывается результат)

 // size    - размер строки

 // parm    - структура параметров для диалога (см. maptype.h)

 // point - координаты верхнего левого угла диалога

 // При ошибке возвращает ноль

 

 long int WINAPI semGetDateSemantic(char* value, long int size,       // 13/08/10

                                    TASKPARMEX *parm, POINT *point);

 

 // Диалог "Отмена транзакций"

 // hmap    - идентификатор открытой карты

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // Вызов файла справки из Mapscena.chm ("KON1")

 // При ошибке возвращает ноль

 

 long int WINAPI tedUndoOperation(HMAP hmap, TASKPARMEX *parm);

 

 // Диалог "Открыть атлас карт"

 // parm    - параметры задачи (поле Handle должно содержать идентификатор главного окна)

 // name    - имя файла атласа карт, который открывается или создается

 // size - размер строки

 // mode - доступ к режимам диалога

 //        0 - полный доступ

 //        ALS_NO_CHOICE_ATLAS - режим редактирования выбранного атласа

 //                                            (выбор атласа в диалоге отменен)

 //        ALS_NO_SEND_MESSAGE - сообщение AW_OPENDOCUN главному окну не посылается

 // Если mode = ALS_NO_SEND_MESSAGE, то отсутствует режим Открыть данные.

 // Допустимо совместное использование флагов (ALS_NO_CHOICE_ATLAS | ALS_NO_SEND_MESSAGE).

 // Название файла справки Arealist.chm (TOPIC: AREALIST).   

 // При выборе открываемых данных главному окну посылается сообщение         // 15/03/17

 // AW_OPENDOCUN (0x623) c именем выбранной карты (может быть передано в mapOpenDataUn).

 // При ошибке возвращает ноль

 

 long int WINAPI tedOpenAtlas(TASKPARMEX *parm, char* name, long int size);

 long int WINAPI tedOpenAtlasEx(TASKPARMEX *parm, char* name, long int size, long int mode);

long int WINAPI tedOpenAtlasUn(TASKPARM *parm, WCHAR * name, long int size, long int mode);  // 30/07/14

 

 // Диалог "Создать атлас карт"

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // name    - имя файла атласа карт, который создается

 // size - размер строки

 // mode - доступ к режимам диалога

 //        0 - полный доступ

 //        ALS_NO_CHOICE_ATLAS - режим редактирования выбранного атласа

 //                                            (выбор атласа в диалоге отменен)

 //        ALS_NO_SEND_MESSAGE - сообщение AW_OPENDOCUN главному окну не посылается

 // Если mode = ALS_NO_SEND_MESSAGE, то отсутствует режим Открыть данные.

 // Допустимо совместное использование флагов (ALS_NO_CHOICE_ATLAS | ALS_NO_SEND_MESSAGE).

 // Название файла справки Arealist.chm (TOPIC: AREALIST).      // 17/01/11

 // При ошибке возвращает ноль

 

 long int WINAPI tedCreateAtlas(TASKPARMEX *parm, char* name, long int size, long int mode); // 30/09/11

 

 // Диалог "Выбрать карту из списка"

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // hmap    - идентификатор открытой карты

 // item    - указатель на список элементов атласа, выбранных в текущей точке

 // count   - число элементов в списке

 // Возвращает номер выбранного пользователем элемента

 // Если функция возвращает -1, то необходимо вызвать диалог "Открыть атлас карт"    // 12/01/11

 // Название файла справки Mapscena.chm (TOPIC: AREALIST1).      // 17/01/11

 // При ошибке возвращает ноль

 

 long int WINAPI tedAtlasList(TASKPARMEX *parm, ALSITEM* item, long int count);

 long int WINAPI tedAtlasListEx(HMAP hmap, TASKPARMEX *parm, ALSITEM* item, long int count);

 

 // Диалог "Перейти в заданную точку по координатам"

 // hmap    - идентификатор открытой карты

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // place   - формат отображаемых в диалоге координат:

 // PLANEPOINT      = 1,  В метрах на местности

 // MAPPOINT        = 2,  В условных единицах карты (дискретах)

 // PICTUREPOINT    = 3,  В пикселах текущего полного изображения

 //                       эллипсоид Красовского 1942г.

 // GEORAD          = 4,  В радианах в соответствии с проекцией

 // GEOGRAD         = 5,  В градусах ...

 // GEOGRADMIN      = 6,  В градусах, минутах, секундах ...

 //                       общеземной эллипсоид WGS84

 // GEORADWGS84     = 7,  В радианах в соответствии с проекцией

 // GEOGRADWGS84    = 8,  В градусах ...

 // GEOGRADMINWGS84 = 9,  В градусах, минутах, секундах ...

 // PLANE42POINT    = 10, В метрах на местности по ближайшей зоне

 // GEORADPZ90      = 11, В радианах в соответствии с проекцией

 // GEOGRADPZ90     = 12, В градусах ...

 // GEOGRADMINPZ90  = 13, В градусах, минутах, секундах ...

 // point  - координаты текущей точки в метрах на карте

 // При успешном выполнении возвращает координаты выбранной точки в метрах

 // на карте

 // Вызов файла справки из Mapscena.chm ("MOVEMENT")

 // При ошибке возвращает ноль

 

 long int WINAPI tedGoPoint(HMAP hmap, TASKPARMEX *parm, long int place,

                            DOUBLEPOINT * point);

 

 // Диалог "Добавление в документ данных из каталога"

 // Могут быть добавлены ПК, Mtw, Rsw, Mtl, Mtq, Tin

 // hmap    - идентификатор открытой карты

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // title   - указатель на текст заголовка диалога или 0

 // flagSit - флаг запрета добавления ПК  (0-запрещено/1-разрешено)

 // flagMtw - флаг запрета добавления Mtw (0-запрещено/1-разрешено)

 // flagRsw - флаг запрета добавления Rsw (0-запрещено/1-разрешено)

 // flagMtl - флаг запрета добавления Mtl (0-запрещено/1-разрешено)

 // flagMtq - флаг запрета добавления Mtq (0-запрещено/1-разрешено)

 // flagTin - флаг запрета добавления Tin (0-запрещено/1-разрешено)

 // Вызов файла справки из Mapscena.chm ("IDN7081")

 // При ошибке возвращает ноль

 

 long int WINAPI tedAddDataFormDirEx(HMAP hmap, TASKPARMEX * parm, char * title,

                                     long int flagSit, long int flagMtw, long int flagRsw,

                                     long int flagMtl, long int flagMtq, long int flagTin);

 

// Способы построения метрики объекта

 

#define MC_POLYLINE     5213 // Произвольная линия

#define MC_RECT         5214 // Горизонтальный прямоугольник

#define MC_ROTRECT      5215 // Наклонный прямоугольник

#define MC_POLYRECT     5216 // Многоугольник с прямыми углами

#define MC_FIXCIRCLE    5217 // Окружность фиксированного радиуса

#define MC_VARCIRCLE    5218 // Окружность произвольного радиуса

#define MC_AUTO         5219 // Автомат

#define MC_FROMFILE     5220 // Из файла

#define MC_KEYB         5221 // С клавиатуры

#define MC_TWOSIDE      5222 // Двойная линия (ось по центру)

#define MC_SPLINE1      5223 // Сглаживающий сплайн

#define MC_SPLINE2      5224 // Огибающий сплайн

#define MC_RIGHTSIDE    5225 // Двойная линия (ось слева)

#define MC_THREEPOINT   5226 // Окружность по трем точкам

 

typedef struct MEDRSCPARM

{

 int Regime;                  // Режим создания объекта одним из способов:

                              // от MC_POLYLINE до MC_THREEPOINT

                              // == -1 - режимы создания недоступны в диалоге!

                              // Если установлен режим, не соответствующий локализации,

                              // будет установлен MC_POLYLINE

 

 int Repeat;                  // Повторяемость семантики

                              // == 1 - повторяемая

                              // == 0 - неповторяемая

                              // == -1 - недоступна в диалоге

 

 int FlagKey;                 // Флаг установки режимов создания

                              // если == 0, то доступность режимов

                              // устанавливается автоматически,

                              // иначе - в соответствии с Кеу

 

 int Rezerv;                  // Резерв

 

 char NameDlg[128];           // Название диалога

char Key[32];                // Уникальный идентификатор вида объекта в классификаторе

}

MEDRSCPARM;

 

typedef struct CHOICEOBJECTPARM

{

HSELECT hSelect;            // Фильтр (список доступных локализаций объекта)

 

int MapSelect;       // Фильтр для работы со списком карт

                     //  = 0  - список по всем картам документа

                     //  = 1  - список из одной карты (карта будет

                     //         запрошена из идентификатора объекта)

int MapEditSelect;   // Фильтр для работы со списком карт (по признаку редактирования)

                     //  = 0  - список по всем картам документа

                     //  = 1  - список из карт, подлежащим редактированию

 

}

CHOICEOBJECTPARM;

 

 // Создание нового объекта  (устаревшая функция)

 // hmap - идентификатор открытой векторной карты

 // parm    - параметры задачи

 // hobj - идентификатор объекта

 // medparm - параметры создания

 // choiceparm - параметры для диалога выбора вида объекта

 // hselect - фильтр (если hselect == 0 - фильтр не используется)

 // возвращает внутренний код объекта

 // Вызов файла справки из Mapscena.chm ("SelecOb")

 // при ошибке или отказе возвращает 0

 

 long int WINAPI scnChoiceNewObject(HMAP hmap, TASKPARMEX *parm, HOBJ hobj,

                                    MEDRSCPARM* medparm,

                                    CHOICEOBJECTPARM *choiceparm,

                                    HSELECT select);               

 

typedef struct OBJFROMRSC

{

HSELECT hSelect;        // Фильтр (для настройки списка доступных локализаций)

int MapSelect;          // Фильтр для работы со списком карт

                         //  = 0 - список по всем картам документа

                         //  = 1 - только редактируемые карты

                         //  = 2 - список из одной карты (только та, на которой

                         //        зарегистрирован объект)

int Regime;              // Режим создания от MC_POLYLINE до  MC_THREEPOINT

                         // = -1 - не отображать

                         // Если установлен режим, не соответствующий локализации

                         // будет установлен MC_POLYLINE

int Repeat;              // Опция "Повтор семантики"

                         // = 0 выключить, 1 включить -1 не показывать

                         // Имеет смысл при последовательном создании нескольких объектов

                         // после выбора вида из классификатора

                         // Если опция включена, сразу после закрытия диалога следует

                         // вызвать диалог заполнения семантики и при записи объектов

                         // больше заполнение семантики не предлагать

                         // Если опция выключена - при записи каждого создаваемого объекта

                         // вызывать диалог заполнения семантики

}

OBJFROMRSC;

 

 // Создание (выбора вида) объекта

 // hmap - идентификатор открытой векторной карты

 // parm    - параметры задачи (описание в maptype.h)

 // hobj - идентификатор объекта

 // objparm - параметры для диалога выбора вида объекта

 // name - заголовок диалога

 // возвращает внутренний код объекта, hobj соответствует

 // выбранной карте и коду объекта

 // при ошибке или отказе возвращает 0                     // 25/02/14

 

 long int WINAPI scnGetObjectFromRsc(HMAP hmap,TASKPARMEX *parm,HOBJ hobj,

                                             OBJFROMRSC* objparm,char *title);

 

long int WINAPI scnGetObjectFromRscUn(HMAP hmap, TASKPARMEX *parm, HOBJ hobj,     // 22/05/17

                                       OBJFROMRSC* objparm, const WCHAR* title);

 

// Диалог настройки графического описания линии и полигона

 // На момент вызова функции info должен быть зарегистрирован (mapRegisterDrawObject)

 // как линейный или площадной объект (в зависимости от локализации появляются разные диалоги)

 // hmap   - идентификатор открытой векторной карты

 // parm   - параметры приложения

 // info   - идентификатор редактируемого объекта

 // regime - указатель на переменную, в которую будет записан выбранный способ нанесения

 //          объекта (MC_POLYLINE,MC_RECT,...)

 // isnew  - признак нового или редактируемого объекта:

 //          1 - объект создается (есть кнопки способа нанесения)

 //          0 - редактируется графика объекта, нет кнопок способа нанесения

 // При ошибке возвращает 0

 

 long int WINAPI scnSetLineDraw(HMAP hmap, TASKPARM * parm, HOBJ info,

                                        long int *regime, long int isnew);

 

 // Диалог настройки графического описания подписи

 // На момент вызова функции info должен быть зарегистрирован (mapRegisterDrawObject)

 // как подпись

 // hmap   - идентификатор открытой векторной карты

 // parm   - параметры приложения

 // info   - идентификатор редактируемого объекта

 // regime - указатель на переменную, в которую будет записан выбранный способ

 //          нанесения объекта (MC_POLYLINE,...)

 // isnew  - признак нового или редактируемого объекта:

 //            1 - объект создается (есть кнопки способа нанесения)

 //            0 - редактируется графика объекта, нет кнопок способа нанесения

 // При ошибке возвращает 0

 

long int WINAPI scnSetLabelDraw(HMAP hmap, TASKPARM * parm, HOBJ info,

                                        long int *regime, long int isnew);

 

 // Диалог "Настройка вида лицензии"

 // param  - параметры задачи (поле IniName должно содержать

 //          имя ini файла, поле PathShell - каталог приложения)

 // Вызов файла справки из Mapscena.chm (тема "IDN_LICENSE")

 // При ошибке или отказе возвращает 0

 

 long int WINAPI mapExecuteGNClient(TASKPARMEX * param);    // 31/01/11

 

 // Выбор номера карты (векторной, растровой, матричной) из списка

 // hmap    - идентификатор открытой векторной карты

 // parm    - параметры задачи

 // maptype - тип данных: FILE_MAP, FILE_RSW, FILE_MTW

 // accesstype - тип доступа к данным:

 //              0 - все, 1-только для копирования, 2-только с полным доступом

 // title      - название вызывающей задачи

 // Возвращает: -1 при отказе от выбора или отсутствии карт, иначе - номер карты

 // в списке (с 0 для FILE_MAP и с 1 для FILE_RSW, FILE_MTW)

 

 long int WINAPI scnGetMapNumberWithTitle(HMAP hmap,TASKPARMEX *parm, int maptype,

                                       int accesstype, int current, const char *title);

 

 // Функция создания диалога обработки сообщения

 // hWnd     -  идентификатор окна

 // message  -  строка, содержащая текст сообщения для размещения в окне диалога

 // title    -  заголовок диалога

 // flag     -  тип сообщения (MB_OK, MB_YESNO, MB_YESNOCANCEL)

 // percent  -  значение процента выполнения

 // second   -  значение оставшегося времени обработки в сек.

 // Возвращает идентификатор окна диалога

 // Для закрытия диалога нужно вызвать функцию scnCloseMessageBoxProcess

 // При ошибке возвращает 0

 

 HANDLE WINAPI scnOpenMessageBoxProcess(HWND hWnd, const char * message,

                                        const char * title, long int flag,

                                        long int percent,

                                        long int second);

 

 // Функция обновления содержимого диалога

 // hmsgproc - идентификатор окна диалога обработки сообщения

 //            (получен как результат выполнения функции CallMessageBoxProcess)

 // Если диалог закрыт пользователем, то возвращает 0

 // В этом случае нужно вызвать scnCloseMessageBoxProcess

 

 long int WINAPI scnUpdateMessageBoxProcess(HANDLE hmsgproc, long int percent,

                                                             long int second);

                                        

 // Функция закрытия диалога

 // hmsgproc - идентификатор окна диалога обработки сообщения

 //            (получен как результат выполнения функции CallMessageBoxProcess)

 // Возвращает код нажатой кнопки - IDYES, IDNO, IDCANCEL.

 

 long int WINAPI scnCloseMessageBoxProcess(HANDLE hmsgproc);

 

 // Функция выбора кода семантики из классификатора для просмотра       // 08/08/13

 // hmap       - идентификатор открытой векторной карты

 // parm       - параметры задачи

 // sitenumber - номер пользовательской карты в цепочке от 1 до числа карт

 // code       - код семантики для просмотра

 // Возвращает код назначенной семантики и номер пользовательской карты (sitenumber).

 

 long int WINAPI scnChangeCodeSemantic(HMAP hmap, TASKPARM* parm,

                                       long int * sitenumber, long int code);

 

 // Функция редактирования семантики

 // hmap       - идентификатор открытой векторной карты

 // parm       - параметры задачи

 // info       - идентификатор редактируемого объекта

 // ident      - для режима Редактора "Создание объекта" ident = 0,

 // иначе ident = 1

 // При ошибке возвращает ноль

 

 long int WINAPI semMakeSemantic(HMAP hmap, TASKPARMEX *parm, HOBJ info, long int ident);

 

 // Нанесение объектов по координатам из файла KML                   // 24/04/12

 // hmap        - идентификатор главного документа

 // parm        - текущие системные параметры

 // kmlfile     - полное имя загружаемого файла

 // При ошибке возвращает 0

 

 long int WINAPI tedLoadObjectsFromKML(HMAP hmap, TASKPARMEX *parm, HOBJ info, char * kmlfile);

                                  

 

 /*********************************************************

 *                                                        *

 *           ФУНКЦИИ ДОСТУПА К ГИС-СЕРВЕРУ                *

 *                                                        *

 *     Для открытия карты на ГИС-сервере в штатные        *

 *      функции открытия карт передается строка вида      *

 *           "ALIAS#условное_имя_карты"                   *

 *  Условное имя карты не является путем к паспорту карты *

 *     Строка "ALIAS#" является ключевым словом для       *

 *           обращения к ГИС-серверу                      *

 *                                                        *

 *********************************************************/

 

 // Вызвать диалог регистрации пользователя на ГИС Сервере

 // (ввод имени пользователя и пароля и подключение к ГИС Серверу)

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // При ошибке возвращает ноль

 

 long int WINAPI svGetUserData(TASKPARM *parm);

 

 // Вызвать диалог ввода параметров соединения с ГИС Сервером

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // Пользователь выбирает имя хоста (или IP) и номер порта

 // При ошибке возвращает ноль

 

 long int WINAPI svGetConnectParameters(TASKPARM *parm);

 

 // Вызвать диалог выбора доступных пользователю данных на ГИС Сервере

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // name    - буфер для размещения выбранного алиаса данных

 //          (выделять не менее MAXPATH)

 // size    - размер выделенного буфера

 // Имя выбранного алиаса карты помещается в name

 // При ошибке возвращает ноль

 

 long int WINAPI svOpenDataEx(TASKPARM *parm,char * name,long int size);

 

 // Вызвать диалог выбора доступных пользователю данных на ГИС Сервере

 // для атласа

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // name    - буфер для размещения выбранного алиаса данных

 //          (выделять не менее MAXPATH)

 // size    - размер выделенного буфера

 // Имя выбранного алиаса карты помещается в name

 // При ошибке возвращает ноль

 

 long int WINAPI svOpenDataAtlas(TASKPARM *parm,char * name,long int size);

 

 // Вызвать диалог выбора доступных пользователю данных на ГИС Сервере

 // для атласа

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // hwnd - идентификатор окна атласа для передачи сообщений о открытии данных

 // При ошибке возвращает ноль

 

 long int WINAPI svOpenDataAtlasEx(TASKPARM *parm, HWND hwnd);

 

 // Вызвать диалог выбора для уже зарегистрированных пользователей   // 21/02/12

 // доступных данных на ГИС Сервере

 // Возможен множественный выбор данных

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // hwnd - идентификатор окна для передачи сообщений

 // При выборе данных окну посылается сообщение MT_CHANGEDATAUN

 // (0x65D, WPARAM - type : FILE_MAP, FILE_RSW, FILE_MTW...

 //         LPARAM - имя выбранного алиаса данных (указатель на двухбайтовую  // 03/02/17

 // строку в кодировке UTF-16)

 // При ошибке возвращает ноль

 

 long int WINAPI svGetServerData(TASKPARM *parm,HWND handle);

 

 // Вызвать диалог выбора для уже зарегистрированных пользователей

 // доступных данных определенного типа на ГИС Сервере

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // hwnd - идентификатор окна для передачи сообщений

 // При выборе данных окну посылается сообщение MT_CHANGEDATAUN

 // (0x65D, WPARAM - type : FILE_MAP, FILE_RSW, FILE_MTW...

 //         LPARAM - имя выбранного алиаса данных (указатель на двухбайтовую  // 03/02/17

 // строку в кодировке UTF-16)

 // filetype - тип открываемых данных: (1 - карты, 2 - матрицы, 3 - растры,

 //                                    -1 - данные всех типов)

 // Возможен множественный выбор данных

 // При ошибке возвращает ноль

 

 long int WINAPI svGetServerTypeData(TASKPARM *parm,HWND handle,

                                     long int filetype);                  // 30/07/13

 

 // Вызвать диалог выбора доступных пользователю данных на ГИС Сервере

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // При выборе открываемых данных главному окну посылается сообщение

 // AW_OPENDOC (0x655) c именем выбранного алиаса карты (может быть передан

 // в mapOpenData).

 // При ошибке возвращает ноль

 

 long int WINAPI svOpenData(TASKPARM *parm);

 

 // Вызвать диалог выбора доступных пользователю данных на ГИС Сервере

 // для добавления к текущей открытой карте

 // parm    - параметры задачи (поле Handle должно содержать

 //           идентификатор главного окна)

 // При выборе добавляемых данных вызывается функция mapAppendData(hmap, ...),

 // и окну карты посылается уведомление - сообщение MT_CHANGEDATA или MT_CHANGEDATAUN

 // (0x65D, WPARAM - type : FILE_MAP, FILE_RSW, FILE_MTW...)

 // Идентификатор окна карты запрашивается через посылку главному окну сообщения

 // AW_GETCURRENTDOC (0x673, WPARAM - HWND *, LPARAM - HMAP *).

 // При ошибке возвращает ноль

 

 long int WINAPI svAppendData(HMAP hmap, TASKPARM *parm);

 

 // Преобразовать строку в хэш по алгоритму MD5

 // source - исходная строка ANSI

 // target - строка результата (32 символа и замыкающий ноль)

 // size   - число байт, зарезервированных в строке (не менее 33)

 // При ошибке параметров возвращает ноль

 

 long int WINAPI svStringToHash(const char * source,

                                char * target, long int size);

 

 

/*********************************************************

 *                                                        *

 *             ФУНКЦИИ ПОСТРОЕНИЯ ПРОФИЛЯ                 *

 *                                                        *

 *********************************************************/

 

 // Открыть диалог построения профиля

 // hmap - идентификатор открытой векторной карты

 // parm - описание параметров задачи (см.maptype.h)

 // profparm - описание параметров построения профиля (см.maptype.h)

 // Если шаг по горизонтали в profparm равен нулю, отображается весь профиль

 // Указанные шаг по горизонтали и по вертикали могут быть скорректированы

 // согласно масштабу и высоте

 // В процессе работы диалога в profparm записываются текущие параметры

 // При закрытии диалога главному окну посылается сообщение     

 // AW_CLOSEDIALOGNOTIFY (0x610 - см.maptype.h)

 // Возвращает указатель на диалог построения профиля (HBuildProfil)

 // Вызов файла справки из Mapscena.chm ("Proflin")

 // При ошибке возвращает ноль

 

 // Пример вызова функций построения диалога

 //HBUILDPROFIL Hbuildprofil;

 //HINSTANCE LibInst;

 //HBUILDPROFIL (WINAPI * Openprof)(HMAP hmap, TASKPARMEX * parm,

 //                             PROFBUILDPARM * profparm);

 //long int (WINAPI * Closeprof)(long int Hbuildprofil);

 //long int (WINAPI * SetCurrentValue)(long int HBuildProfil,

 //                                    DOUBLEPOINT * point);

 //(FARPROC)Openprof = mapLoadLibrary("gisdlgs.dll",&LibInst,"mclOpenBuildProf");

 //(FARPROC)Closeprof = mapGetProcAddress(LibInst,"mclCloseBuildProf");

 //(FARPROC)SetCurrentValue = mapGetProcAddress(LibInst,"mclSetCurrentValue");

 // Hbuildprofil = (*(Openprof))(hmap,parm,&profparm);

 // ....

 //(*(SetCurrentValue))(Hbuildprofil,&(profparm.Point));

 // ....

 // if (Hbuildprofil)  (*(Closeprof))(Hbuildprofil);

 

 HBUILDPROFIL WINAPI mclOpenBuildProf(HMAP hmap, TASKPARMEX * parm,

                                      PROFBUILDPARM *profparm);

 

 HBUILDPROFIL WINAPI mclOpenBuildProfEx(HMAP hmap, TASKPARMEX * parm,    

                                       PROFBUILDPARMEX *profparm);

 // Закрыть диалог построения профиля

 // HBuildProfil - указатель открытого диалога построения профиля

 

 long int WINAPI mclCloseBuildProf(HBUILDPROFIL HBuildProfil);

 

 // Отобразить профиль в текущей точке

 // HBuildProfil - указатель открытого диалога построения профиля

 // point - координаты точки в метрах на контуре объекта,

 //         по которому построен профиль

 // Функция отображает участок профиля, на котором находится данная точка и

 // устанавливает в окна диалога вычисленные значения по данной точке.

 

 long int WINAPI mclSetCurrentValue(HBUILDPROFIL HBuildProfil,

                                    DOUBLEPOINT * point);

 

 

 /*********************************************************

 *                                                        *

 *            ФУНКЦИЯ ПОСТРОЕНИЯ ЗОНЫ ВИДИМОСТИ           *

 *                                                        *

 *********************************************************/

 

 // Построение зоны видимости по матрице высот в виде растрового изображения

 // hmap - идентификатор открытой векторной карты

 // parm - описание параметров задачи (см.maptype.h)

 // namersw - полное имя растра

 // zonevisibility - параметры построения зоны (см.maptype.h)

 // Построение производится при наличии открытой матрицы высот

 // Результат записывается в файл namersw

 // Возвращает номер растра в цепочке

 // Вызов файла справки из Mapscena.chm ("ZONVIEW")

 // При ошибке возвращает ноль

 

 long int WINAPI mclBuildZoneVisibility(HMAP hmap,TASKPARMEX *parm,

                                                char * namersw,

                                                TBUILDZONEVISIBILITY *zonevisibility);

 long int WINAPI mclBuildZoneVisibilityUn(HMAP hmap,TASKPARMEX *parm,

                                          WCHAR * namersw,

                                          TBUILDZONEVISIBILITY *zonevisibility);

 

 

/*********************************************************

 *                                                        *

 *      Диалог отображения высоты в точке                 *

 *                                                        *

 *********************************************************/

 

 // Диалог отображения высоты в точке для всех открытых матриц

 // hmap - идентификатор открытой векторной карты

 // parm - описание параметров задачи (см.maptype.h)

 // point - координаты точки в метрах

 // Вызов файла справки из Mapscena.chm ("CAN")

 // При ошибке возвращает ноль

 

 long int WINAPI mclShowHeight(HMAP hmap,TASKPARMEX *parm,    // 26/05/11

                                       DOUBLEPOINT * point);

 

 

 /*********************************************************

 *                                                        *

 *    Настройка параметров масштабирования и поворота    *

 *                                                        *

 *********************************************************/

 

//  Диалог настройки парапметров масштабирования, перемещения и поворота

// *center - указатель на точку привязки, после обработки содержимое может измениться

// *dx,*dy - указатели на значения смещений (м)

// *angle  - указатель на значение угла поворота (град., против часовой стрелки +)

// *scale  - указатель на значение коэффициента масштабирования

// При отказе возвращает 0, 1 - нормальное завершение

//------------------------------------------------------------------------------

 

 long int WINAPI scnSetRotateOptions(HMAP map,TASKPARMEX *parm,

                                     DOUBLEPOINT *center,

                                     double *dx,double *dy,

                                     double *angle,double *scale);

 

 

 /*********************************************************

 *                                                        *

 *      Диалог ввода пароля для доступа к карте           *

 *                                                        *

 *********************************************************/

 

// mapname  - имя карты

// password - буфер для размещения пароля

// size     - размер буфера в байтах для пароля

// При отказе возвращает 0, 1 - нормальное завершение

 

 long int WINAPI scnGetMapPassword(const WCHAR * mapname, WCHAR * password, int size);

 

/*********************************************************

 *                                                        *

 *      Диалог ввода пароля для распаковки архива         *

 *                                                        *

 *********************************************************/

 

// Диалог ввода пароля для распаковки архива

// zipname  - имя файла zip

// password - буфер для размещения пароля

// size     - размер буфера в байтах для пароля

// Возвращает   0 - отказ от ввода

//              1 - формируется пароль

 

long int WINAPI scnGetUnzipPassword(const WCHAR * zipname, WCHAR *password, long int size);

 

/**********************************************************

 *                                                        *

 *      ФУНКЦИЯ СОЗДАНИЯ XSD-СХЕМЫ ПО КЛАССИФИКАТОРУ      *

 *                                                        *

 *********************************************************/

 

// hrsc  - идентификатор классификатора карты

// Результат нормального завершения работы - файл схемы xsd

// При ошибке возвращает 0

 

 long int WINAPI scnRscToXsd(HRSC hrsc);

 

 

/*********************************************************

 *                                                        *

 *         ФУНКЦИЯ ПОСТРОЕНИЯ ЗОНЫ ВОКРУГ ОБЪЕКТА         *

 *                                                        *

 *********************************************************/

 

typedef struct BUILDZONEPARMEX                    // 18/04/14

{

  double Radius;

  int FlagDial;

  int Check;

  int Size;            // 1 - радиус в м

                       // 1000 - радиус в км

                       // 2 - мм на карте

  int TypeZone;        // Тип зоны для площадных объектов

                       // 0 - внешняя

                       // 1 - внутренняя

                       // 2 - внешняя и внутренняя

  int EnableType;      // 0 - Info не замкнут

                       // 1 - Info замкнут

  int FormZone;        // Вид края зоны

                       // 1 - закругленный

                       // 0 - край углом

} BUILDZONEPARMEX;

 // Построение зоны

 // hmap - идентификатор открытой векторной карты

 // parm - описание параметров задачи (см.maptype.h)

 // zoneparm - параметры построения зоны

 // При ошибке возвращает ноль

 

 long int WINAPI mclPutRadiusZoneObject(HMAP hmap,TASKPARMEX *parm,

                                        BUILDZONEPARMEX *zoneparm);

 

 // Справка об объекте местности                          // 16/10/14

 // hmap - идентификатор открытой векторной карты

 // parm - описание параметров задачи (см.maptype.h)

 // info - выбранный объект

 // При ошибке возвращает ноль

 

 // Открыть диалог "Справка об объекте"

 HSTATOBJ WINAPI mclCreateStatisticObject(HMAP hmap, TASKPARMEX * parm,

                                          HOBJ info);

 // Закрыть диалог "Справка об объекте"

 long int WINAPI mclCloseStatisticObject(HSTATOBJ hstat);

 

 // Обновление диалога "Справка об объекте"

 long int WINAPI mclChangeStatisticObject(HSTATOBJ hstat, HOBJ info);

 

} // extern "C"

 

#endif  // GISDLGS_H

 

Дата последней корректировки 19.06.2017 г.