2015-03-17 8 views
0

Привет Я разрабатываю приложение, которое анализирует данные, после чего я хочу визуализировать некоторые данные на карте с помощью MapInfo, я сделал экземпляр MapInfo правильно, но до сих пор я не знаю, как отображать данные на экземпляр или как его использовать, также созданный экземпляр не отображается даже после того, как я сделаю видимым.Автоматизация MapInfo с C#

ниже мой код

namespace JA3_Trace_Viewer 
{ 
public partial class JA3Main : Form 
{ 
    public JA3Main() 
    { 
     InitializeComponent(); 
    } 

    private void JA3Main_Load(object sender, EventArgs e) 
    { 

     MapInfo.MapInfoApplication mapinfoinstance = new MapInfo.MapInfoApplication(); 
     mapinfoinstance.Visible = true; 
     DDockWindow winM = new DDockWindow(); 
     winM.Activate();    
    } 
} 

Данные, которые я хочу, чтобы визуализировать на карте является широта и долгота, и еще столбцов позволяет называть их данные, пожалуйста, если вы поможете мне.

Заранее спасибо.

Новый код:

public partial class Form1 : Form 
{ 
    // Sets the parent of a window. 
    [DllImport("User32", CharSet = CharSet.Auto, ExactSpelling = true)] 
    internal static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndParent); 

    //Sets window attributes 
    [DllImport("USER32.DLL")] 
    public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); 

    //Gets window attributes 
    [DllImport("USER32.DLL")] 
    public static extern int GetWindowLong(IntPtr hWnd, int nIndex); 

    //assorted constants needed 
    public static int GWL_STYLE = -16; 
    public static int WS_CHILD = 0x40000000; //child window 
    public static int WS_BORDER = 0x00800000; //window with border 
    public static int WS_DLGFRAME = 0x00400000; //window with double border but no title 
    public static int WS_CAPTION= WS_BORDER | WS_DLGFRAME; //window with a title bar 
    public static int WS_MAXIMIZE = 0x1000000; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     // Create a new instance of MapInfo. 
     MapInfoApplication mapinfo = new MapInfoApplication(); 

     // Get the handle to the whole MapInfo application. 
     // 9 = SYS_INFO_MAPINFOWND. 
     string handle = mapinfo.Eval("SystemInfo(9)"); 

     // Convert the handle to an IntPtr type. 
     IntPtr oldhandle = new IntPtr(Convert.ToInt32(handle)); 

     //Make mapinfo visible otherwise it won't show up in our control. 
     mapinfo.Visible = true; 

     //Set the parent of MapInfo to a picture box on the form. 
     SetParent(oldhandle, this.pictureBox1.Handle); 

     //Get current window style of MapInfo window 
     int style = GetWindowLong(oldhandle, GWL_STYLE); 

     //Take current window style and remove WS_CAPTION(title bar) from it 
     SetWindowLong(oldhandle, GWL_STYLE, (style & ~WS_CAPTION)); 

     //Maximize MapInfo so that it fits into our control. 
     mapinfo.Do("Set Window 1011 Max"); 
    } 
} 
+0

Вы не открываете таблицу MapInfo (файл '.TAB'), поэтому отобразить нечего. –

+0

Должен ли я сначала получить окно mapinfo в моей форме, на самом деле, я думаю, что окно mapinfo не работает в моей форме. –

+0

Нет, вы не получаете полную встроенную MapInfo, с барами меню и т. Д. Пока вы не открываете какую-либо таблицу, вы ничего не видите. –

ответ

0

Класс MapInfoApplication имеет метод Do() и Eval(), то вы можете передать командную строку, например, mapinfoinstance.Do('Open Table foo_bar.TAB as foo')

Просмотрите образцы MapBasic в папке Samples\DOTNET\... в папке MapBasic.

+0

Привет, спасибо за ваши комментарии, я добавил новый код в главном посте, который я использовал, и он все еще не решает проблему, не могли бы вы ее увидеть. –

 Смежные вопросы

  • Нет связанных вопросов^_^