компоненты ActiveX GIS ToolKit Active 13.0.2
библиотеки Qt 5.14.2
mingw 7.3.0 x64
ОС Windows10x64
библиотеки загружаются динамически и ActiveX подключается следующим образом:
#define CLSID_MapView "{f200d06e-b99e-470e-8378-e0583b1d12ff}"
#define gis64accesPath "C:\\Program Files\\Panorama\\GISToolActive13\\GisDll\\X64\\gis64acces.dll"
#define gis64vecexPath "C:\\Program Files\\Panorama\\GISToolActive13\\GisDll\\X64\\gis64vecex.dll"
gis64acces = new QLibrary(gis64accesPath);
gis64acces->load();
mapGetDrawScale = (_mapGetDrawScale) gis64acces->resolve("mapGetDrawScale");
gis64vecex = new QLibrary(gis64vecexPath);
gis64vecex->load();
ImportFromAnySxfEx = (_ImportFromAnySxfEx) gis64vecex->resolve("ImportFromAnySxfEx");
ui->axWidget->setControl( CLSID_MapView);
QObject::connect(this, SIGNAL(signal_MapOpen(QString, bool)), ui->axWidget,
SLOT(MapOpen(QString, bool)));
QObject::connect(ui->axWidget,SIGNAL(OnMapMouseMove(int, double, double, double)), this,
SLOT(MapViewMouseMove(int, double, double, double)));
QObject::connect(ui->axWidget,SIGNAL(OnMapOpen()), this,
SLOT(MapViewMapOpen()));
прототипы функций описаны следующим образом:
typedef double (*_mapGetDrawScale)(HMAP); _mapGetDrawScale mapGetDrawScale;
typedef long int (*_ImportFromAnySxfEx)(HMAP hmap, const char * sxfname,
const char * rscname, char * mapname,
long int size, HMESSAGE handle,
HSELECT select, long int frscfromsxf);
_ImportFromAnySxfEx ImportFromAnySxfEx;
typedef double (*_mapGetHeightValueOfMtr)(HMAP hMap, long int number,
double x, double y);
_mapGetHeightValueOfMtr mapGetHeightValueOfMtr;
typedef long int (*_mapGetRstPlanePointColor)(HMAP hMap, long int number,
COLORREF *color, double x, double y);
_mapGetRstPlanePointColor mapGetRstPlanePointColor;
typedef long int (*_mapPlaneToGeoWGS84)(HMAP hmap, double *Bx, double *Ly);
_mapPlaneToGeoWGS84 mapPlaneToGeoWGS84;
typedef void (*_mapRadianToDegree)(double *radian, GEODEGREE *degree);
_mapRadianToDegree mapRadianToDegree;
typedef long int (*_mapPlaneToGeo42)(HMAP hmap, double *Bx, double *Ly);
_mapPlaneToGeo42 mapPlaneToGeo42;
mapGetDrawScale отрабатывает без проблем
при попытке использовать mapPlaneToGeoWGS84, mapPlaneToGeo42 валится без сообщений
при использовании mapRadianToDegree получаю AccessValation
хэндл на карту получаю вот так:
hMap = (HMAP)ui->axWidget->property("MapHandle").toLongLong();
параметры выходных координат устанавливаю вот так:
ui->axWidget->setProperty("PlaceOut", PP_PICTURE);
в документации на ActiveX сказано:
Применяемая система
координат
Значения
PP_MAP = $0000; // Координаты точек в системе карты в дискретах
PP_PICTURE = $0001; // Координаты точек в системе изображения в пикселях
PP_PLANE = $0002; // Координаты точек в плоской прямоугольной системе на местности в метрах
PP_GEO = $0003; // Координаты точек в геодезических координатах в радианах
PP_GEOWGS84 = $0004; // Координаты точек в геодезических координатах в радианах WGS84
однако в maptype.h
enum PPLACE // ПРИМЕНЯЕМАЯ СИСТЕМА КООРДИНАТ{
PP_MAP = 1, // КООРДИНАТЫ ТОЧЕК В СИСТЕМЕ КАРТЫ В ДИСКРЕТАХ
PP_PICTURE = 2, // КООРДИНАТЫ ТОЧЕК В СИСТЕМЕ ИЗОБРАЖЕНИЯ В ПИКСЕЛАХ
PP_PLANE = 3, // КООРДИНАТЫ ТОЧЕК В ПЛОСКОЙ ПРЯМОУГОЛЬНОЙ СИСТЕМЕ
// НА МЕСТНОСТИ В МЕТРАХ
PP_GEO = 4, // КООРДИНАТЫ ТОЧЕК В ГЕОДЕЗИЧЕСКИХ КООРДИНАТАХ
// В РАДИАНАХ
PP_GEOWGS84 = 8, // КООРДИНАТЫ ТОЧЕК В ГЕОДЕЗИЧЕСКИХ КООРДИНАТАХ
// В РАДИАНАХ В СИСТЕМЕ WGS-84
};
ActiveX компонент выдает координаты в метрах при установленном параметре $0002 что в maptype соответствует PP_PICTURE
Вопрос: Почему валяться могучие функции и что предпринять в этом случае?