Код Boilerplate для прослушивания MouseEvents в Google Earth COM API - PullRequest
2 голосов
/ 02 июля 2010

Я пытаюсь определить положение мыши по LAT / LON в приложении Windows Forms, используя browsercontrol и IGEPlugin.Кто-нибудь получил ключ?

1 Ответ

2 голосов
/ 14 июля 2010

Это не так сложно, если вы используете бесплатный Winforms Geplugin control librar y - просто выполните следующие простые шаги

Вам необходимо сообщить объекту веб-браузера, что вы хотите прослушивать события перемещения мыши

 geWebBrowser.AddEventListener(gePlugin.getGlobe(), "mousemove");

Тогда вам нужно настроить некоторые обработчики событий. Код ниже должен быть легко читаемым. Вы можете определить широту / длину курсора мыши из аргумента mouseEvent в методе DoMouseMove

geWebBrowser.KmlEvent += GeWebBrowserKmlEvent;


private void GeWebBrowserKmlEvent(object sender, GEEventArgs e)
        {
            // if it is a mouse event
            if (null != sender as IKmlMouseEvent)
            {
                handleKmlMouseEvents((IKmlMouseEvent)sender, e.Data);
            }
            else
            {
                MessageBox.Show(GEHelpers.GetTypeFromRcw(sender));
            }
        }

 private void handleKmlMouseEvents(IKmlMouseEvent mouseEvent, string action)
        {
            string currentTarget = mouseEvent.getCurrentTarget().getType();

            switch (action)
            {
                case "mousemove":
                    {
                        DoMouseMove(mouseEvent);
                        break;
                    }

                case "click":
                    {
                        DoClick(mouseEvent, currentTarget);
                        break;
                    }
                case "mousedown":
                    {
                        DoMouseDown(mouseEvent, currentTarget);
                        break;
                    }
                case "mouseup":
                    {
                        DoMouseUp(mouseEvent);
                        break;
                    }
            }
        }

 private void DoMouseMove(IKmlMouseEvent mouseEvent)
 {

 }
...