C# 調(diào)用 Google Earth Com API開(kāi)發(fā)(二)繼《C#調(diào)用GoogleEarth Com API開(kāi)發(fā)(一)》,我Neil又帶給大家第二篇文章,。這一篇文章在第一篇的基礎(chǔ)上,,展示如何調(diào)用Windows API將GoogleEarth的界面隱藏掉,并將GoogleEarth的地圖顯示在自定義的窗體上,。廢話少說(shuō),,直接上代碼。 1,、主窗口代碼: 1: // 功能:GE實(shí)例(二) 2: // 描述:GE COM API 網(wǎng)址:http://earth.google.com/comapi/index.html 3: // 作者:溫偉鵬 4: // 日期:2009-02-08 5:
6: using System; 7: using System.Collections.Generic; 8: using System.ComponentModel; 9: using System.Data; 10: using System.Drawing; 11: using System.Text; 12: using System.Windows.Forms; 13: using EARTHLib; 14:
15: namespace GEDemo 16: {
17: public partial class Form2 : Form 18: {
19: /// <summary> 20: /// 用來(lái)關(guān)閉GoogleEarth的消息定義 21: /// </summary> 22: static readonly Int32 WM_QUIT = 0x0012; 23:
24: private IntPtr GEHWnd = (IntPtr)5; 25: private IntPtr GEHrender = (IntPtr)5; 26: private IntPtr GEParentHrender = (IntPtr)5; 27: /// <summary> 28: /// 定義GE應(yīng)用程序類 29: /// </summary> 30: private ApplicationGEClass GeApp; 31:
32: public Form2() 33: {
34: InitializeComponent();
35: }
36:
37: protected override void OnLoad(EventArgs e) 38: {
39: base.OnLoad(e); 40:
41: if (!this.DesignMode) 42: {
43: GeApp = new ApplicationGEClass(); 44:
45: GEHWnd = (IntPtr)GeApp.GetMainHwnd();
46:
47: NativeMethods.SetWindowPos(GEHWnd, NativeMethods.HWND_BOTTOM, 0, 0, 0, 0,
48: NativeMethods.SWP_NOSIZE + NativeMethods.SWP_HIDEWINDOW);
49:
50: GEHrender = (IntPtr)GeApp.GetRenderHwnd();
51: GEParentHrender = (IntPtr)NativeMethods.GetParent(GEHrender);
52:
53: NativeMethods.MoveWindow(GEHrender, 0, 0, this.Width, this.Height, true); 54:
55: NativeMethods.SetParent(GEHrender, this.Handle); 56: }
57: }
58:
59: protected override void OnClosing(CancelEventArgs e) 60: {
61: base.OnClosing(e); 62:
63: NativeMethods.PostMessage(GeApp.GetMainHwnd(), WM_QUIT, 0, 0);
64: }
65: }
66: }
2,、NativeMethods類定義: 1: // 功能:Windows API調(diào)用 2: // 描述:大家可以參照MSDN 3: // 作者:溫偉鵬 4: // 日期:2009-02-08 5:
6: using System; 7: using System.Collections.Generic; 8: using System.Text; 9: using System.Runtime.InteropServices; 10:
11: namespace GEDemo 12: {
13: public class NativeMethods 14: {
15: [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 16: public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, UInt32 uflags); 17:
18: [DllImport("user32.dll", CharSet = CharSet.Auto)] 19: public static extern IntPtr PostMessage(int hWnd, int msg, int wParam, int lParam); 20:
21: #region 預(yù)定義 22:
23: public static readonly IntPtr HWND_BOTTOM = new IntPtr(1); 24: public static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2); 25: public static readonly IntPtr HWND_TOP = new IntPtr(0); 26: public static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); 27: public static readonly UInt32 SWP_NOSIZE = 1; 28: public static readonly UInt32 SWP_NOMOVE = 2; 29: public static readonly UInt32 SWP_NOZORDER = 4; 30: public static readonly UInt32 SWP_NOREDRAW = 8; 31: public static readonly UInt32 SWP_NOACTIVATE = 16; 32: public static readonly UInt32 SWP_FRAMECHANGED = 32; 33: public static readonly UInt32 SWP_SHOWWINDOW = 64; 34: public static readonly UInt32 SWP_HIDEWINDOW = 128; 35: public static readonly UInt32 SWP_NOCOPYBITS = 256; 36: public static readonly UInt32 SWP_NOOWNERZORDER = 512; 37: public static readonly UInt32 SWP_NOSENDCHANGING = 1024; 38:
39: #endregion 40:
41: public delegate int EnumWindowsProc(IntPtr hwnd, int lParam); 42:
43: [DllImport("user32", CharSet = CharSet.Auto)] 44: public extern static IntPtr GetParent(IntPtr hWnd); 45:
46: [DllImport("user32", CharSet = CharSet.Auto)] 47: public extern static bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); 48:
49: [DllImport("user32", CharSet = CharSet.Auto)] 50: public extern static IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 51:
52: [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)] 53: public static extern IntPtr GetWindow(IntPtr hWnd, int uCmd); 54:
55: public static int GW_CHILD = 5; 56: public static int GW_HWNDNEXT = 2; 57: }
58: }
3,、執(zhí)行效果: |
|
來(lái)自: 昵稱6065431 > 《我的圖書(shū)館》