Добрый день!
Спасибо за предоставленный пример - в результате анализа исходного кода, вероятно, не выполняется добавление созданной карты с основной.
Это может произойти, если на вход функции mapAppendAnyData() вторым параметром передается не полный путь к карте, а ее имя (переменная mainname без расширения карты):
[CODE]// Добавить данные к открытой карте (карту, растр, матрицу)
// hMap - идентификатор открытых данных
// name - имя открываемого файла (MAP, SITX, SIT, MTW, MTQ, RSW, MPT) в кодировке UNICODE
// mode - режим чтения/записи (GENERIC_READ, GENERIC_WRITE или 0)
// transform - признак трансформирования пользовательской карты
// к ранее открытым данным (если проекции разные):
// 0 - не трансформировать данные (преобразовывать "на лету"),
// 1 - трансформировать данные при открытии и сохранить карту
// в новой проекции,
// -1 - задать вопрос пользователю.
// В серверной версии (-1) обрабатывается, как 0.
// password - пароль доступа к данным из которого формируется 256-битный код
// для шифрования данных (при утрате данные не восстанавливаются)
// size - длина пароля в байтах !!!
// Передача пароля необходима, если при создании карты он был указан.
// Если пароль не передан, а он был указан при создании,
// то автоматически вызывается диалог scnGetMapPassword из mapscena.dll (gis64dlgs.dll)
// Если выдача сообщений запрещена (mapIsMessageEnable()), то диалог
// не вызывается, а при отсутствии пароля происходит отказ открытия данных
// Возвращает идентификатор типа данных (FILE_MAP - для векторной
// карты, FILE_RSW - для растра, FILE_MTW - для матрицы, FILE_MTL - для
// матрицы слоев, FILE_MTQ - для матрицы качеств), данные добавляются в
// список последними, если данные уже были открыты, число открытых данных
// (карт, растров, матриц) не меняется
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapAppendAnyData(HMAP hMap, const WCHAR *name, long int mode = 0, long int transform = -1);_MAPIMP long int _MAPAPI mapAppendDataUn(HMAP hMap, const WCHAR *name, long int mode = 0);[/CODE]
Для получения расширенной информации о возникшей проблеме можно активировать диагностический журнал работы приложения. Для этого необходимо выполнить следующие действия:
- включить ведение журнала диагностики с помощью вызова функции mapOpenDiagnostics() (mapapi.h) перед работой с данными. Например:
mapOpenDiagnostics(WTEXT("/tmp/diagnostics.log"));
- выполнить действие, приводящее к проблеме;
- отключить ведение журнала диагностики с помощью функции mapCloseDiagnostics() (mapapi.h).