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

Ошибка входных данных

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » ГИС Сервер
Страницы: 1
RSS
Ошибка входных данных, GISToolKit Active C#
 
     Здравствуйте, подскажите пожалуйста в чем может быть проблема. При использовании функции для вызова диалога регистрации пользователя на ГИС Сервере svGetUserData(TASKPARM *parm); возникает следующая ошибка (рис.1). Перед этим вызываю функцию диалога ввода параметров соединения с ГИС Сервером  svGetConnectParameters(TASKPARM *parm);, которая выполняется без ошибок?
1.PNG (9.63 КБ)
 
Попробуйте новую версию библиотек gislib11 -
http://gisinfo.ru/download?id=101

Или используйте одну более универсальную функцию для открытия данных на ГИС Сервере:
Код
 // Вызвать диалог выбора доступных пользователю данных на ГИС Сервере
 // parm    - параметры задачи (поле Handle должно содержать
 //           идентификатор главного окна)
 // При выборе открываемых данных главному окну посылается сообщение
 // AW_OPENDOC (0x655) c именем выбранного алиаса карты (может быть передан
 // в mapOpenData).
 // При ошибке возвращает ноль
 
 long int WINAPI svOpenData(TASKPARM *parm);
 
Здравствуйте, подскажите пожалуйста в чем может быть проблема при вызове функции svOpenData(TASKPARM *parm); при нажатии кнопки открыть в диалоге, перехватываю сообщение AW_OPENDOC (0x655), но почему-то сообщение не перехватывается?
Код
 [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {  
                case 0x655:
                    {
                        string map_name = Marshal.PtrToStringAnsi(m.WParam);
                        MapView1.MapOpen(map_name, true);

                        MapView1.Repaint();
                        break;
                    }
            }
            base.WndProc(ref m);
        }
 
Цитата
Дарья Лунченко написал:
Здравствуйте, подскажите пожалуйста в чем может быть проблема при вызове функции svOpenData(TASKPARM *parm); при нажатии кнопки открыть в диалоге, перехватываю сообщение AW_OPENDOC (0x655), но почему-то сообщение не перехватывается?
Код
  [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {  
                case 0x655:
                    {
                        string map_name = Marshal.PtrToStringAnsi(m.WParam);
                        MapView1.MapOpen(map_name, true);

                        MapView1.Repaint();
                        break;
                    }
            }
            base.WndProc(ref m);
        }
 
Попробуйте перехватить сообщение AW_OPENDOCUN и имя файла в кодировке UTF-16.  
 
А какой значение имеет AW_OPENDOCUN?
Изменено: Дарья Лунченко - 24.10.2016 18:42:30
 
Идентификаторы сообщений объявлены в mapview.rh:
Код
// Идентификаторы сообщений для связи главного окна,
// окон карт и прикладных задач
#define AW_OPENDOCUN          0x623                    // 02/01/14  
 
Спасибо, так сработало!
 
Здравствуйте. Подскажите пожалуйста как отправить сообщение для активации кнопки Добавить в диалоге выбора данных на ГИС Сервере. Прочитала в описании следующее :
Цитата
Если в диалоге открытия данных будет нажата кнопка Добавить, то диалог пытается определить текущую карту, отправляя запрос в виде сообщения AW_GETCURRENTDOC (0x673): ::SendMessage(Parm->Handle, AW_GETCURRENTDOC, (long)&hWnd, (long)&hMap); В ответ необходимо вернуть указатель на идентификатор данных (HMAP) и идентификатор окна с открытой картой для передачи ему уведомления о необходимости перерисовать окно после открытия данных: ::InvalidateRect(hWnd, 0, false);
Выходит так при вызове функции svOpenData(ref parm);, перехватываю сообщение   AW_GETCURRENTDOC (0x673), далее необходимо ответить, но непонятно какой код сообщения должен быть? Импортировала функцию SendMessage из User32.dll и вот, понимаю что не правильно делаю, подскажите как надо пожалуйста:
Код
                 case 0x673:
                    {
                        Taskparm();
                    int result =   GEOPort.SendMessage((IntPtr)parm.Handle, 0x673, (IntPtr)this.Handle, (IntPtr)MapView1.MapHandle);
               
                        break;
                    }
 
В ответ на пришедшее сообщение AW_GETCURRENTDOC свой SendMessage делать не надо!

Нужно в обработчике пришедшего к Вам сообщения установить требуемые значения (судя по тексту Вы в нем и находитесь).
В WParam и в LParam приходят указатели, по которым надо положить HWND и HMAP соответственно.

Примерно так:
Скрытый текст

Хотя, svOpenData должен работать и без сообщения AW_GETCURRENTDOC. Все нужные ему параметры передаются в TASKPARM, а карта открывается снаружи.
Другое дело svAppendData - там диалог добавляет карту и ему надо знать, куда и к чему добавлять.
 
Спасибо большое за разъяснения!
Страницы: 1
Читают тему (гостей: 1)



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

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