如何把Google Earth的地图显示区域嵌入到一个MFC窗口中

lailzhihou 2009-09-01 03:35:14
我想做的是在MFC的对话框程序中,如何调用Windows API将GoogleEarth的界面隐藏掉,并将GoogleEarth的地图显示在自定义的窗体上????
...全文
1962 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsh817227 2012-05-23
  • 打赏
  • 举报
回复
我也遇到相同的问题了 不过程序才启动的时候可以用 等鼠标移动后在放回来就不起作用了
筋肉强打 2010-08-03
  • 打赏
  • 举报
回复
不过新的问题出现了,就是地图嵌入到程序中后,不能对其进行键盘操作了,它的焦点始终都是在父窗口上....这么解决?
筋肉强打 2010-08-03
  • 打赏
  • 举报
回复
楼主,亲乃的,爱死你了!
huxiaoweiyoung 2009-10-15
  • 打赏
  • 举报
回复
楼主,有源码吗?分享一下啊!!!
lyysf1 2009-09-15
  • 打赏
  • 举报
回复
这个网站真不错啊
barech 2009-09-15
  • 打赏
  • 举报
回复
顶一下楼主,呵呵

回去研究研究如何显示
lailzhihou 2009-09-08
  • 打赏
  • 举报
回复
前几天没空,今天才来回复一下,问题只是基本解决,但解决的不好,小弟在这里抛砖引玉,希望高手提供更好的方法。说明一下,我使用的Google Earth是简体中文5.0正式版。
我在解决这个问题前先看了这两位大虾的文章:
http://www.cnblogs.com/wpwen/archive/2009/02/22/1395622.html
http://blog.163.com/lionyue@126/blog/static/1079307120097212449115/
两篇文章基本一样。
下面说说我的做法,基本和上面的一样。还是先来段代码:

//获取客户端框架窗口句柄
m_hMainWnd = m_geApplication.GetMainHwnd();
//设置Google Earth窗口的位置和大小
::SetWindowPos((HWND)m_hMainWnd, HWND_BOTTOM, 0, 0, STATIC_GOOGLEEARTH_WIDTH+AP_GOOGLEEARTH_LEFTWIDTH+AP_GOOGLEEARTH_RIGHTWIDTH, STATIC_GOOGLEEARTH_HEIGHT+AP_GOOGLEEARTH_TOPHEIGHT+AP_GOOGLEEARTH_BOTTOMHEIGHT, SWP_HIDEWINDOW);
OLE_HANDLE renderhwnd = m_geApplication.GetRenderHwnd();
HWND GEParentHrender = ::GetParent((HWND)renderhwnd);
::ShowWindow(GEParentHrender, SW_HIDE);
//把HWND和窗口上的一个静态文本控件绑定
::SetParent((HWND)renderhwnd, m_static_googleearth.GetSafeHwnd());

我的代码与前面两位大虾所提到的不同之处在于设置Google Earth窗口的大小,他们都说要设置成没有大小的。而我却把它设置成有大小的。他们提到说设置成没有大小的,是因为他们说可以使用类似:
::MoveWindow((HWND)renderhwnd, 0, 0, width, height, true);
这样的语句来控制这个现实区域的大小和位置,但是我在使用这样的语句的时候,发现并没有起作用。我不知道是否是与我的Google Earth的版本有关系??

我的解决该问题的办法就是设置Google Earth的客户端为一个指定的大小,如800X600,那么此时他的画图的现实区域也是一个固定大小的,可能是730X592,这个大小是在隐藏左侧面板的条件下的,由于除去了客户端的标题,工具栏,和左右下的边框等,所以显示区域就只有这么大了。如果你想得到一个800X600大小的显示区域,那么可能就需要把客户端指定为870X608的大小了。

这样做基本能解决这个问题,但是有个很不好的地方,就是,如果别人的电脑使用的字体是大字体或超大字体(我使用的是普通字体)的时候,都会使窗口的标题栏的高度变大,也就是说这时候设置了870X608大小的Google Earth客户端的话,并不能得到800X600的画图窗口,还有一些其他的原因也会产生这样的问题。在这些情况下就会得不到一个固定大小的画图窗口,这样就会很不方便。我在想是否有没有什么办法能够获取到当前的画图窗口的大小。或是像两位大虾提到的能使用MoveWindow那就更好。

希望有这方面经验的高手来指点一下!!!
马少华 2009-09-01
  • 打赏
  • 举报
回复
怎么做的,能不能共享一下啊。
lailzhihou 2009-09-01
  • 打赏
  • 举报
回复
问题基本解决了,来个人接分呀!!!

6,721

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 Google技术社区
社区管理员
  • Google技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧