Итересует кто как собирает прикладные задачи под Linux, написанные под c builder, это вообще возможно? Есть много прикладных задач написанных с использованием panapi и mapapi для windows платформы на c builder, сейчас столкнулись с неообходимостью разработки под linux системы, закупили ГИС Конструктор для qt, реализовали оболочку, загрузку и работу задач по panapi на qt, но теперь, получается, все задачи надо переписывать на qt? В той же легенде карты mapclass видел в объявления типа
#ifdef WIN32API #define HMESSAGE HWND #else #define HMESSAGE MSGHANDLER #endif Вот и хотел узнать есть ли что-то, что позволит ускорить процесс миграции?
Автономное приложение написанное на qt, не использую компоненты ГИС Конструктора, пишу на mapapi, которое имеет возможность загрузки задач написанных на panapi, тоже самое делал для windows на c builder, осталось много задач, в том числе и стандартные, типа легенды карты и т.д. Инетерестно, каким путем пошили Вы при разаработке Оператора и миграции прикладных задач?
Реализация собственного функционала под Linux возможна одним из двух способов: - разработка прикладной задачи для ГИС Оператор SE; - написание автономного ГИС-приложения с помощью ГИС Конструктор.
Разработка прикладной задачи для ГИС Оператор SE производится на основе интерфейсов MAPAPI (взаимодействие с цифровыми картами) и PANAPI (взаимодействие с картой в окне - например, отклики на перемещение мыши, перерисовка карты).
Написание автономного ГИС-приложения с помощью ГИС Конструктор производится на основе интерфейсов MAPAPI. Для того чтобы ознакомиться с процессом написания автономного ГИС-приложения с помощью ГИС Конструктор, можно использовать следующие типовые материалы: - Руководство программиста, Руководство системного программиста, Типовая программа и методика испытаний (https://gisinfo.ru/download/doc.htm#28); - тестовые примеры, входящие в инсталляцию; - руководство по применению и перечень функций MAPAPI (https://gisinfo.ru/download/doc.htm#18); - описание функций в заголовочных файлах; - поиск решений типовых задач на форуме.
Спасибо, это все знаю, давно с Вами сотрудничаем.))) Интересует путь перехода с windows версии на linux в плане разработки прикладных задач, которых на windows под c builder наработано и у Вас и у нас много. В частности есть вопросы по отрисовке,в Вашем примере SDK для ГИС Оператор SE cmline - измерение длины произвольной ломаной при обработке событий мыши используются функции типа mapViewUserObject, mapViewMapObject - в качестве параметров HWND передаю структуруXCONTEXT которую получаю так HWND makeXCONTEXTForWidget(QWidget *widget){ #ifdef __linux XCONTEXT *context = new XCONTEXT; context->xcDisplay = QX11Info::display(); context->xcWindow = widget->winId(); context->xcContext = XCreateGC(context->xcDisplay, context->xcWindow, 0, NULL); context->xcPoint.X = 0; context->xcPoint.Y = 0; return reinterpret_cast<HWND>(context); #else return widget->winId(); #endif } Эти функции отрабатывают нормально, в событии Paint Вы предлагаете использовать
// Нарисовать хвост mapPaintUserObject95(HMap, dc.operator HDC(), &rect, &LineImage, &LineData, PP_PLANE); в Linux HWND =HDC и я передаю туда тоже самое, но отрисовать не получается, функции отрисовки возращают 0, что делаю не так? Использую ГИС конструктор 13.x для QT 5, CentOS 7, крайняя версия.
Странно получается, я вот помню что не было функции winID в Qt5. Но теперь смотрю, что она есть. Какое-то странное чувство) Когда мы переводили ГИС Конструктор на Qt5, то сталкивались с похожей проблемой и в итоге перешли на функции рисования в XImage, чтобы: 1. было одинаково для всех систем 2. было независимо от поддержки Х-сервера ОС 3. была возможность буферизации. Например, чтобы заменить mapPainMapObject95 можно использовать mapPaintUserObjectToXImage. Рисование карты mapPaintToXImage. Отобразить выделение mapPaintSelectToXImage и т.д. Если же Вы хотите придерживаться поддержки XWindow, то пришлите небольшой пример, который мы могли бы попробовать запустить с отладкой и попытаться найти что мешает
Спасибо, теперь картина прояснилась, поддержки XWindow придерживаться, конечно, не хочу)) Еще вопрос по созданию панелей прикладных задач, а точнее, иконок кнопок, как-то использовать xpm в качестве иконок не очень прикольно, тем более, есть ресурсы (qrc) и QIcon, у себя пока передаю в основное окно указатель на QIcon в BUTTONINFOLX butlx; butlx.hBitmap = (HBITMAP)&icon; интерестно как у Вас, может есть какое-то более хитрое решение?
А что насчет задач, которые под windows представлены в SDK? Планируется ли их добавление в SDK linux ветки? Хотел еще уточнить, под linux вы используете MessageHandler а в windows реализации также или используете функционал Send/PostMessage в прикладных задачах на PanApi?
Максим Казаровец написал: А что насчет задач, которые под windows представлены в SDK? Планируется ли их добавление в SDK linux ветки?
Вы имеете в виду расширение SDK для ГИС Оператор под Linux задачами из SDK для ГИС Панорама для Windows? Если Вы используете ГИС Конструктор, то можете использовать набор примеров, входящих в его состав.