Цитата |
---|
Александр Савелов написал: Хотел еще уточнить, под linux вы используете MessageHandler а в windows реализации также или используете функционал Send/PostMessage в прикладных задачах на PanApi? |
Обычно да. Те функции, которые имею параметр типа HMESSAGE или HWND и в описании к функции сказано, что этот параметр используется для отправки сообщений диалогу, то в Windows этот параметр используется как идентификатор окна и ему будут посылаться сообщения посредством Send/PostMessage. Об этом должно быть указано в описании к функции вместе с кодом сообщения которое отсылается.
При этом и в Windows могут быть MAPAPI-функции, которые используют callback-функции для уведомления о своем состоянии (как в Linux).
Но об этом всегда указывается в описании функции.
Например:
Цитата |
---|
// Построение зоны затопления по набору отметок уровня воды. // В результате построения формируется матрица качеств, элементы // которой содержат глубины в зоне затопления. // Габариты матрицы качеств определяются координатами точек с // отметками уровня воды (массив pointArray) и величиной расширения // габаритов области (areaExtension). // hMap - исходная карта для построения зоны, // mtqName - полное имя создаваемой матрицы качеств, // pointArray - адрес массива точек с отметками уровня воды // Координаты точек (pointArray->X,pointArray->Y) и значения уровня // (pointArray->H) задаются в метрах в системе координат векторной // карты, // pointCount - число точек в массиве pointArray // Размер в байтах массива, заданного адресом pointArray, должен // быть не менее pointCount * sizeof(XYHDOUBLE), в противном случае // возможны ошибки работы с памятью, // areaExtension - положительное число, задающее величину // расширения габаритов области в метрах, // minDepth - положительное число, задающее минимальную глубину // зоны затопления в метрах (глубины, меньшие minDepth в матрицу // качеств не заносятся), // isFloodZoneAbs - признак того, что во входных данных заданы абсолютные // высоты (!=0), если 0, то высоты относительные (функции *ZoneAbs* // используют абсолютные высоты на входе); // handle - идентификатор окна диалога, которому посылаются // сообщения о ходе процесса : // 0x0581 - сообщение о проценте выполненных работ (в WPARAM), // если процесс должен быть принудительно завершен, в ответ // должно вернуться значение 0x0581. // fcallback - функция обратного вызова для сообщения статуса выполнения (процентов), // это функция типа EVENTCALL (см. описание в maptype.h), первым параметром // в нее будет возвращено значение eventparam, вторым - код сообщения (0x0581), // в третьем параметре - процент выполненной обработки // в четвертом параметре - адрес строки с названием выполняемого этапа // Если процесс должен быть принудительно завершен, в ответ // должно вернуться значение 0x0581. // eventparam - параметр, передаваемый в функцию обратного вызова для идентификации // отклика на вызывающей стороне. // При отправке сообщения WM_ERROR в первом параметре содержится целочисленный код ошибки, // во втором параметре передается указатель на текст описания ошибки. // Если handle (или fcallback) равно нулю - сообщения не посылаются. // Текст передается в кодировке Unicode (UTF16). long int MTREXPORT mtrBuildFloodZone(HMAP hMap, const char *mtqName, XYHDOUBLE *pointArray, long int pointCount, double areaExtension, double minDepth, HMESSAGE handle); long int MTREXPORT mtrBuildFloodZoneCallback(HMAP hMap, long int isFloodZoneAbs, const WCHAR *mtqName, XYHDOUBLE *pointArray, long int pointCount, double areaExtension, double minDepth, EVENTCALL fcallback, void *eventparam); |