vc 调用dll_调用API

vc 调用dll_调用APIGoogle公司已经将GoogleCOMAPI开放,这样我们就可以通过开放的API来对GoogleEarth进行操作了,比如控制当前视图的高度、中心经纬度,保存当前图片等等。下面是GoogleCOMAPI的网址:http://earth.google.com/comapi/那么,VC程序员如何使用这些API来控制GoogleEarth呢?下面我们编写一个简单的程序来说明对G

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Google公司已经将Google COM API开放,这样我们就可以通过开放的API来对GoogleEarth进行操作了,比如控制当前视图的高度、中心经纬度,保存当前图片等等。下面是Google COM API的网址:

http://earth.google.com/comapi/

那么,VC程序员如何使用这些API来控制GoogleEarth呢?下面我们编写一个简单的程序来说明对Google COM API的使用。

源代码下载 http://bbs.godeyes.cn/upload/2007/03/29/113327.rar

首先用VC建立一个基于Dialog的工程(这个不用教了吧?),工程名为ControlGe,工程建好后,下面就是把Google提供的类添加到工程里边来。

Ctrl+W,打开类向导页面,点击“Add Class”按键,选择“From a type library”,然后到安装GoogleEarth的目录下,找到googleearth.exe文件,点击“打开”按键。

这时会弹出一个框来确认产生Google的类,直接点击“OK”键,这是会生成两个文件加入的工程中:googleearth.h和googleearth.cpp,里面就是我们想要的类了。
GoogleEarth的类已经生成了,那我们如何来用它们呢?各位看客不用着急,我们一步步来。

首先,我们得调用一下::CoInitialize(NULL);初始化一下COM库了,这个函数可以在ControlGe.cpp文件中的InitInstance()函数里面调用。

然后呢,我们再在ControlGeDlg.h中定义一个类成员变量:

IApplicationGE m_geApplication;

顺便说一下,IApplicationGE可是Google COM API最主要的一个接口了,从它提供的操作数量就可以看得出来。

好了,离成功不远了,控制的变量也定义了,下面就开始用它来控制GE吧。

那么我们如何将刚定义的变量取得对GE的控制权呢?费话少说,首先在ControlGeDlg.cpp文件中定义一个变量:

static const CLSID CLSID_ApplicationGE = {0x8097D7E9,0xDB9E,0x4AEF, {0x9B,0x28,0x61,0xD8,0x2A,0x1D,0xF7,0x84}};

然后在OnInitDialog()中加入以下代码:

m_geApplication.CreateDispatch(CLSID_ApplicationGE);

呵呵,现在GE就归你操控了!

我们试着做个简单的操作吧,添加一个按键,然后添加按键的点击处理函数,在函数中加入以下代码:

CString strFileName;

static char BASED_CODE szFilter[] = “jpg Files (*.jpg)|All Files (*.*)|*.*||”;

CFileDialog dlgFile(FALSE, “jpg”, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);

if (dlgFile.DoModal() == IDOK)

{

CWaitCursor wait;

strFileName = dlgFile.GetPathName();

m_geApplication.SaveScreenShot(strFileName, 100);

}

试试看,这是将当前GE的地图给保存成一个jpg格式的图片,只可惜只能保存成黑白图片,google还是给自己留了一手的。

可能上面的代码运行会有些问题,也许是你的GE版本太低了,也许是你的Google COM未注册,注册一下就可以了,Google对注册的说明:

If, for some reason, the Google Earth COM API needs to be registered again, you can execute GoogleEarth.exe with “/RegServer” as a command line argument. 

For instance, assuming GoogleEarth.exe is located in C:\Program Files\Google\Google Earth, the following command line would register Google Earth’s COM API: 

“C:\Program Files\Google\Google Earth\googleearth.exe” /RegServer 

To unregister Google Earth’s COM API, execute the following command: 

“C:\Program Files\Google\Google Earth\googleearth.exe” /UnregServer

好了,我们下面就可以对照Google COM API的文档来试一试对GE的控制操作了。下面我再来演示一下如何把视图切换到指定地方,添加如下代码:

ICameraInfoGE geCamera;

geCamera.AttachDispatch(m_geApplication.GetCamera(TRUE));

geCamera.SetRange(800);

geCamera.SetFocusPointLongitude(113.972522);

geCamera.SetFocusPointLatitude(22.561294);

m_geApplication.SetCamera(geCamera, 1.5);

执行以上代码后,GE就会将视图切换到。。。嘿嘿,到俺家了。。。

【扩展】因为要做GoogleEarth的上位机,所以找了些相关的资料,有了上面的资料,就十分方便了

俺就添加了一个按钮,将生成的kml文件直接导入GoogleEarth打开

m_geApplication.OpenKmlFile(“生成的Kml的路径”,0);

如果要增加其他功能,就在http://earth.google.com/comapi/查相关API就可以了

转自:hi.baidu.com/sjk2046/blog/item/33fb1e24e5e92734c89559fa.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170046.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ios动态视频_手机怎么暂停gif

    ios动态视频_手机怎么暂停gif其实网上GitHub有很多第三方的,但是用起来比较麻烦,这里介绍最简单的一种方式,自己就可以实现,(点击按钮开始播放动态图)1,集成SDWebImage之后,引入头文件#import"U

  • realsense深度图像保存方法[通俗易懂]

    realsense深度图像保存方法[通俗易懂]一般使用realsense时会保存视频序列,当保存深度图像时,需要注意保存的图像矩阵的格式,不然可能造成深度值的丢失。在众多图像库中,一般会使用opencv中的imwrite()函数进行深度图像的保存。一般深度图像中深度值的单位是mm,因此一般使用np.uint16作为最终数据格式保存。例子:importnumpyasnpimportcv2deffun1(…

  • 抽出SqlHelper

    抽出SqlHelper

    2021年12月14日
  • Tomcat如何配置环境变量

    Tomcat如何配置环境变量分步阅读下载安装tomcat,如何配置环境变量?配置过程中是否和作者一样经常出现错误?请仔细读文及注意事项。工具/原料1,JDK:版本为jdk-8u121-windows-x64.exe下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html2,tomcat:版本为apache-tomcat-8.0.36-windows-x64.zip下载地址http://tomcat.apache.org/3,wn10,

  • pycharm使用技巧及常用快捷键_pycharm快捷键大全图

    pycharm使用技巧及常用快捷键_pycharm快捷键大全图Pycharm常用快捷键1、编辑(Editing)Ctrl+Space基本的代码完成(类、方法、属性)Ctrl+Alt+Space快速导入任意类Ctrl+Shift+Enter语句完成Ctrl+P参数信息(在方法中调用参数)Ctrl+Q快速查看文档F1外部文档Shift+F1外部文档,进入web文档主页Ctrl+Shift+Z–>Redo重做Ctrl+鼠标简介/进入代码定义Ctrl+F1显示错误描述或警告.

  • 初次了解ListNode,针对ListNode的理解「建议收藏」

    初次了解ListNode,针对ListNode的理解「建议收藏」关于ListNodepublicclassListNode{intval;ListNodenext;//链表指向的下一个值的指针ListNode(intx){val=x;}//这个方式赋值}我想到的几点事项定义链表ListNode时,链表的首个值不能为0,当首个参数为0时,代表着链表为空。 只需要定义一个List…

    2022年10月27日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号