www.map-info.ru :: Просмотр темы - Несколько окон рабочего набора в своем приложении
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
user



Зарегистрирован: 09.07.2012
Сообщения: 4

СообщениеДобавлено: Пн Июл 09, 2012 5:33 pm    Заголовок сообщения: Несколько окон рабочего набора в своем приложении Добавить ответ со ссылкой на данный текст

Здравствуйте.
Разрабатываю программу, используя автоматизацию OLE и команды MapBasic-a.
Рабочий набор загружаю командами:
Set Application Window winHWND
Set Next Document Parent winHWND Style 1
Run Application map.wor

Грузится превосходно. НО, если в рабочем наборе более одного окна, то отображается только одно. Остальные не видны.
Через GetParent из Windows API посмотрел Parent-ов всех окон. Оказалось, что мой Parent (winHWND) достался только одному окну, а у остальных он совсем другой (скорее всего сам MapInfo).

Как можно заставить MapInfo всем окнам моего рабочего набора присваивать одного (моего) Parent-а?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вт Июл 10, 2012 8:31 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Команда Set Next Document Parent как раз определяет Parent для следующего окна, которое будет открыто. Ее нужно выполнять перед каждым открытием окна. Т.е. отвечая на ваш вопрос - если в рабочем наборе у вас куча окон, то не получится присвоить им всем Parent. Открывайте в рабочем наборе одно окно, остальные окна открывайте самостоятельно программно, предваряя вызов Map From вызовом Set Next Document Parent
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
user



Зарегистрирован: 09.07.2012
Сообщения: 4

СообщениеДобавлено: Вт Июл 10, 2012 11:41 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо за ответ.

Значит, использовать Run Application map.wor бессмысленно.

Скорее всего буду анализировать файл map.wor на предмет ключевых слов (Map from, Browse, Layout и т.п.), добавлять перед ними Set Next Document Parent и запускать RunCommand.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Ср Июл 11, 2012 8:34 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Да, можно и так.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
user



Зарегистрирован: 09.07.2012
Сообщения: 4

СообщениеДобавлено: Ср Июл 11, 2012 12:05 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

К сожалению, новые окна создаются не только при загрузке рабочего набора, но и при использовании встроенных в MapInfo форм по созданию новой карты, списка, графика и т.п. А делать свои аналоги этих окон не хочется.
Буду через функцию SetParent из Windows API задавать свое окно. В принципе, работает - окна становятся видимыми в моем приложении, но при закрытии программы иногда вылезают сообщения о некорректном закрытии приложения.

Если у кого-нибудь есть опыт по использованию SetParent-a для окон из MapInfo, просьба поделиться (какие есть подводные камни).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Чт Июл 12, 2012 6:36 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Не надо делать свои аналоги штатных окон "по созданию новой карты, списка, графика и т.п.". Надо всего лишь сделать свои пункты меню, которые будут вызывать штатные по Run Menu Command, предваряя вызов Set Next Document Parent
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
user



Зарегистрирован: 09.07.2012
Сообщения: 4

СообщениеДобавлено: Чт Июл 12, 2012 9:09 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо. Действительно, сработало.
Но все равно проблема осталась, так как в стандартном диалоге "Новое окно списка" пользователь может выбрать несколько таблиц и откроется сразу несколько окон. Соответственно, Set Next Document Parent отработает только для первого окна, а остальные все равно будут принадлежать MapInfo.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Чт Июл 12, 2012 10:33 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Да, про это я не подумал. Ну тогда - переписывать функционал этих пунктов меню самому. Это надежнее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru