На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Не работает диалог открытия атласа карт GTK 11.12

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Не работает диалог открытия атласа карт GTK 11.12, Не загружаются карты
 
Диалог открытия атласа вызывается, данные добавляются, но после закрытия/открытия диалога данные не появляются. Также, при попытке открыть карту сообщение AW_OPENDOC окну не пресылается. Пробывал создать атлас в операторе, в операторе все хорошо, этот же файл пытаюсь открыть в своей программе, все пусто, открывается пустой диалог. Библиотеки GTK от 20/02/2017.
Код
  char   FileName[MAX_PATH] = ""; 
  char * Extends; 
  char * title; 
  OpenDialog1->Options << ofFileMustExist; 
  if (LanguageCode == ML_RUSSIAN) 
  { 
    title   = "Открытие атласа карт"; 
    Extends = "Файлы атласа(*.als)|*.ALS"; 
  } 
 
  else 
  { 
    title   = "Open atlsas of map"; 
    Extends = "Atlas file (*.als)|*.ALS"; 
  } 
 
  OpenDialog1->Filter = Extends; 
  OpenDialog1->Title  = title; 
 
  // бШАПЮРЭ ХЛЪ ТЮИКЮ 
  if (OpenDialog1->Execute()) 
    { 
     HINSTANCE libinst = ::LoadLibrary("gisdlgs.dll"); 
     // бШГНБ ТСМЙЖХХ 
     typedef long int (WINAPI * OPENATL)(TTASKPARMEX *parm, char* name, long int size, long int mode); 
     OPENATL lpfn_openatl = (OPENATL)GetProcAddress(libinst, "tedOpenAtlasEx"); 
     int ret = 0; 
     if (lpfn_openatl != 0) 
     { 
       TTASKPARMEX LoadParm; 
       LoadParm.Language  = Language; 
       LoadParm.Resource  = (int)libinst; 
       LoadParm.IniName   = MapIniName; 
       LoadParm.HelpName  = HelpName; 
       LoadParm.PathShell = PathShell; 
       LoadParm.ApplicationName  = ApplicationName; 
       LoadParm.Handle    = Handle; // хэндл основного окна программы, сообщение AW_OPENDOC замапино
       LoadParm.DocHandle = Handle; 
       strncpy(FileName, (char *)OpenDialog1->FileName.c_str(), sizeof(FileName) - 1); 
       // БШГБЮРЭ ДХЮКНЦ 
       ret = (*lpfn_openatl)(&LoadParm, FileName, sizeof(FileName)-1, 0); 
     } 
 
     if (libinst) 
    {  
     ::FreeLibrary(libinst); 
    } 
  }
Изменено: Максим Казаровец - 09.03.2017 16:07:53
 
С проблемой разбираемся.
Поскольку Вы не используете параметр mode, предлагаю воспользоваться функцией tedOpenAtlas вместо tedOpenAtlasEx.
Вызов функции tedOpenAtlas проверил на библиотеках от 20.02.2017. Диалог вызывается корректно.

Как только работа tedOpenAtlasEx будет исправлена, мы сообщим в данной теме.

PS
Просьба указывать используемый продукт, его версию и среду разработки.
 
Воспользовался функцией tedOpenAtlas вместо tedOpenAtlasEx, атлас сохраняется и дерево карт открывается, но сообщение на открытие главному окну так и не присылается, при нажатии кнопки открыть данные. Использую c builder 6, GTK free 11.12, библиотеки от 20.02.2017.
 
Диалог так и не поправили?
 
Цитата
Максим Казаровец написал:
Диалог так и не поправили?
Пока нет. Изменения не коснутся исходных текстов  GIS ToolKit.
Поэтому достаточно будет просто обновить библиотеки ГИС-ядра.

Справочно сообщаю, что в связи с переводом ГИС-ядра на платформу 12-ой версии, а также для поддержки юникод в отдельные функции внутри ядра вносятся соответствующие изменения.
Функции tedOpenAtlas и tedOpenAtlasEx в 12-ой версии отсылают сообщение AW_OPENDOCUN заданному в параметрах окну (вместо AW_OPENDOC, которое отсылалось ранее).
Соответственно, имя карты, передаваемое по указателю в WPARAM данного сообщения, - это теперь юникод-строка.

Для поддержки в Вашем приложении последующего перехода на 12-ю версию рекомендую реализовать обработку обоих сообщений.

По факту обновлений библиотек ГИС-ядра в части посылки сообщения я дополнительно сообщу в данной теме.
Пока ни 11-ая, ни 12-ая версия сообщения  AW_OPENDOC и AW_OPENDOCUN при работе в GIS ToolKit не отсылают.
 
Цитата
Денис Вицко написал:
Изменения не коснутся исходных текстов  GIS ToolKit.
Поэтому достаточно будет просто обновить библиотеки ГИС-ядра.

Сборка библиотек GIS ToolKit 11 доступна в разделе Скачать

Сообщения AW_OPENDOC должны посылаться окну, заданному в параметре Handle структуры TTASKPARMEX.
 
tedOpenAtlasEx по прежнему не сохранет дерево карт при повторном вызове диалога, с tedOpenAtlas все впорядке.
 
Цитата
Максим Казаровец написал:
tedOpenAtlasEx по прежнему не сохранет дерево карт при повторном вызове диалога, с tedOpenAtlas все впорядке.

Спасибо!
Ошибку в tedOpenAtlasEx увидели. Ошибка такая, что не исключена порча хорошего атласа.
Поправим.

Для справки: tedOpenAtlas и tedOpenAtlasEx отличаются только тем, что в последней можно задать режим, позволяющий запретить в диалоге смену выбранного атласа или запретить отправку сообщений окну карты.
Поэтому, если ни то, ни другое Вам не требуется, можно использовать tedOpenAtlas.
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности