在之前的 MapGIS K9三维TDE平台插件开发环境配置 文章里面,我介绍了使用MapGIS K9 三维TDE平台开发插件的环境配置,但是仅仅配置好环境只是一个开始,相信很多读者已经像小编我一样摩拳擦掌了吧,下面小编我就献丑给各位读者讲一下使用MapGIS K9 三维TDE平台开发一个会说Hello World 的简单三维插件程序。

STEP 1 插件导出函数

在MapGIS K9 三维TDE平台里面开发三维插件,这是必须的一步,就是设置导出函数。

打开你所建立的工程(这里我以之前MapGIS K9三维TDE平台插件开发环境配置里面所建立的工程为例)里面的.def文件。写入以下代码:

  1. ;MyDemo.def : 声明DLL 的模块参数。
  2. ;LIBRARY "MyDemo"
  3. EXPORTS
  4. ; 此处可以是显式导出
  5. dllStartPlugin @1
  6. dllStopPlugin @2

STEP 2 新建插件类

在解决方案上右击,选择添加—类。选择C++类,类命名为MyPlugin,基类为:FunctionPluginBase。

STEP 3 修改头文件

包含头文件TDEFunctionPluginBase7.h,并且使用MapGIS K9 三维TDE的命名空间。

并且添加两个函数——onExecute和registerFunctions函数,全部代码如下:

  1. #pragma once
  2. #include "TDEFunctionPluginBase7.h"
  3. using namespace TDE;
  4. class MyPlug :public FunctionPluginBase
  5. {
  6. public:
  7. MyPlug(void);
  8. ~MyPlug(void);
  9. public:
  10. virtual void onExecute(const String& name, WPARAM wParam, LPARAM lParam) ;
  11. // 派生插件必须在此函数中完成写入功能列表的工作
  12. virtual void registerFunctions(void) ;
  13. };

STEP 4 在类的CPP文件里响应函数

给插件功能起一个名字,将下面的代码放在头文件的下面声明即可。

  1. #include "StdAfx.h"
  2. #include "MyPlug.h"
  3. const String MyFirDomeName="MyFirstFun";

再给插件本身起一个名字,放在构造函数里面,代码如下:

  1. MyPlug::MyPlug(void)
  2. {
  3. mClassName=mHandle="MyFirstDemo";
  4. }

响应onExecute函数,代码如下:

  1. void MyPlug::onExecute(const String& name, WPARAM wParam, LPARAM lParam)
  2. {
  3. if(name==MyFirDomeName)
  4. {
  5. AfxMessageBox("Hello TDE World!");
  6. }
  7. }

响应registerFunctions函数,代码如下:

  1. void MyPlug::registerFunctions(void)
  2. {
  3. FunctionItemGroup* pp=getRootItem();
  4. pp->appendItem(FIT_ITEM,MyFirDomeName);
  5. }

STEP 5 启动插件

在默认工程cpp文件里面实例化刚刚写的插件进行启用即可。

在MyDemo.cpp文件里面包含一下头文件:

  1. #include "stdafx.h"
  2. #include "MyDemo.h"
  3. #include "MyPlug.h"
  4. #include "TDEFunctionPluginManager7.h"

接下来就是用刚刚写的类实例化一个对象,并且进行调用了,代码如下:

  1. MyPlug *pg=NULL;
  2. long WINAPI dllStartPlugin()
  3. {
  4. pg=new MyPlug();
  5. FunctionPluginManager::getSingletonPtr()->addFunctionPlugin(pg);
  6. return 1;
  7. }
  8. long WINAPI dllStopPlugin()
  9. {
  10. G3D_DELETE(pg);//删除对象释放内存
  11. return 1;
  12. }

其中我们可以看到在.def文件里面导出的函数dllStartPlugin和dllStopPlugin在这里实现了。

总结:

这就是在MapGIS K9三维TDE平台下开发第一个Hello World的全过程,总体来说流程还是蛮清晰的,希望这个程序对刚刚入门的童鞋有所帮助。

关于这个demo

对了,忘了给大家看看这个Demo的效果图,效果如下:

MapGIS K9三维TDE平台插件开发第一个插件程序(新手入门必看)相关推荐

  1. MapGIS K9三维TDE平台插件开发调试方法

    记得之前小编我发过两篇文章,是关于MapGIS K9三维TDE平台插件开发环境配置 和MapGIS K9三维TDE平台插件开发第一个插件程序,不知道是否有读者按照我的方法去做了尝试,不过后来小编翻看邮 ...

  2. MapGIS K9 三维TDE平台中实体的可见与不可见

    通过简单的MapGIS K9三维TDE方面的学习,最近感觉有点手心痒痒,索性抽得点时间去写一个简单的三维模型,没有加入材质和灯光等相关属性,这是一个简单的正方体,如下图: 可以看出,我这个MapGIS ...

  3. 萌新入门第三天,css第一天,小白新手入门必看

    首先css规范使用 体验CSS语法规范 要写在head最下方,虽然不影响使用,但是写在这里最方便观看 Css语法格式 选择器 { 属性: 值; 属性: 值; } 选择器之间和属性和值之间要保留空格 选 ...

  4. Node.js 全网最详细教程 (第一章:Node学习入门必看教程)

    1:Node的学前必知: 1: 在学习node之前,想必你应该学习过HTML,CSS,JavaScript 2: 浏览器中的JavaScript由两部分组成:JS核心语法和WebAPI JS核心语法 ...

  5. 小程序开发运营必看:微信小程序平台运营规范

    一.原则及相关说明 ​ 微信最核心的价值,就是连接--提供一对一.一对多和多对多的连接方式,从而实现人与人.人与智能终端.人与社交化娱乐.人与硬件设备的连接,同时连接服务.资讯.商业. ​ 微信团队一 ...

  6. [原创插件] [服务端插件] [新手开发者必看]优秀插件开发教程列表 欢迎回复讨论

    插件开发者专享套餐 声明:此集锦意在提升插件开发者的姿势水平, 插件版版主邀请编程版的海螺编写的,并非错版,请勿举报. 入门以前 在开始写插件之前,你需要知道插件基于 Java,所以请先学习 Java ...

  7. java创建mysql sche_爱可生详解MySQL|入门必看DBLE中间件使用指南第一章:初识DBLE...

    目录: 一.DBLE项目资料 二.环境准备 安装JDK环境 三.安装DBLE 四.配置DBLE 应用场景一:数据拆分 应用场景二:读写分离 五.总结 DBLE 项目资料 DBLE 是企业级开源分布式中 ...

  8. 【FPGA学习笔记】 第一章: PLD/FPGA新手入门

    第一章          PLD/FPGA新手入门 1.       可编程逻辑器件的发展历程 当今社会是数字化的社会,是数字集成电路广泛应用的社会.数字集成电路本身在不断地进行更新换代.它由早期的电 ...

  9. mapgis中6.7属性结构_【技术】这世界的完美,原本一直在我们眼前 ——MapGIS打造全空间GIS平台...

    所谓"世界",世为"时间",界为"空间".无垠大地.浩瀚苍穹,世界上的任何事物都被牢牢打上了时空的烙印.GIS作为获取.存储.分析和管理时空 ...

最新文章

  1. Linux: what's the difference between /proc/self and /proc/$$?
  2. 构建针对 iOS 和 Android 的原生扩展
  3. linux 用脚本建分区,脚本创建磁盘分区
  4. leetcode - 111. 二叉树的最小深度
  5. Comcast Xfinity家庭安全系统被曝严重漏洞
  6. android activity获取dialog对象,Android:从DialogFragment调用Activity的功能
  7. 算法4中数学模型练习题分析
  8. SQL注入中information_schema的作用
  9. 给剧荒的你:Python高分日剧刷剧指南
  10. c语言统计出现个数,C语言统计数字出现的个数
  11. NDK Caused by: java.lang.UnsatisfiedLinkError:
  12. 最佳平方逼近 matlab,matlab最佳平方逼近
  13. 计算机系统——信息的表示与处理
  14. 拼多多运营该怎么做你知道吗?
  15. iptables配置SNAT实现共享上网
  16. [vSphere]VCSA控制台修改root口令及关闭特定报警等操作
  17. Henry前端笔记之 HTML相关
  18. 2021 CVVD首届车联网漏洞挖掘赛线上初赛 Writeup
  19. php 微信支付闪了一下,php,_微信公众号JS API支付,安卓没有效果(会闪一下就消失了),php - phpStudy...
  20. python实现对数转换_利用opencv在python平台上实现二值变换,伽马变换,对数变换,补色变换等...

热门文章

  1. Python机器学习-数据预处理(二)
  2. 在deepin运行imageapp程序
  3. 数据中心的功率密度将会得到进一步提高
  4. 神经网络与深度学习学习笔记(一)——基本概念
  5. centos7 安装显卡驱动及cuda10.2
  6. IAR代码溢出问题处理section placement failed
  7. ElementUI级联框回显问题
  8. PPT模板下载地址汇总(免费)
  9. Android流媒体直播第三方库,Android——直播推流SDK
  10. MathType 6.9中积分符号不显示该怎样解决