Переподчинение окон MapInfo

После запуска MapInfo можно использовать оператор Set Application Window языка MapBasic для обеспечения перехвата управления программой-клиентом диалоговых окон и сообщений об ошибках программы.

MsgString:= Set Application Window ‘ + sWinHand; oleMapInfо.Do(MsgString);

Затем, в желаемой точке включения окна MapInfo в приложение необходимо передать MapInfo оператор Set Next Document, за которым следует MapBasic-оператор, создающий окно. Например, следующий фрагмент кода создает окно Карта MapInfo как подчиненное окно программы-клиента.

Str(Map.Handle, sWinHand);

MsgString:= ‘Set Next Document Parent ‘ + sWinHand + ‘ Style 1;

oleMapInfо.Do(MsgString);

Оператор Set Next Document позволяет "переподчинять" окна документов. Синтаксис этого оператора требует указания уникального номера HWND элемента управления в программе. При последующем создании окна документа MapInfo (с использованием операторов Map, Graph, Browse. Layout или Create Legend) создаваемое окно переподчиняется таким образом, что элемент управления программы-клиента с этим значением HWND становится для окна порождающим объектом.

Для каждого переподчиняемого окна необходимо передать программе MapInfo из программы пару операторов - оператор Set Next Document Parent, а затем оператор, создающий окно. После создания окна может понадобиться запросить из MapInfo значение функции WindowID(0) - целочисленный ID-номер окна (WindowID) в MapInfo, так как многие операторы языка MapBasic требуют задания этого номера- Этот запрос выполняется следующим образом:

MsgString = IntToStr(oleMapInfo.eval("WindowID (0) "))

Заметьте, что даже после переподчинения окна Карты, MapInfo продолжает управлять им. Если часть окна нужно перерисовать, MapInfo автоматически обновляет его. Поэтому клиентская программа может не обращать внимания на сообщения о перерисовке, адресованные подчиненному окну.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: