关闭

vs+qt环境下, 对stk进行二次开发笔记

1201人阅读 评论(1) 收藏 举报
分类:
先安装好stk,这是废话。。然后找到stk安装目录下的几个文件相当于.h的"AgStkUtil.tlh","AgVGT.tlh","AgStkObjects.tlh","STKX.tlh",还有相当于.cpp的"AgStkUtil.tli"
"AgStkObjects.tli", "STKX.tli"。stk使用了com技术,提供的编程接口基本都在这几个文件里面。

1.弄个预编译头

(1)stdafx.h里面#include那几个.tlh的几个文件,可以用using namespace重置一下命名空间。(2)对应的stdafx.cpp里面#include那几个.tli文件。

接下来就是正常的使用com进行编程了,以下列出几个关键的对象的智能指针。

STKX.tlh中

IAgSTKXApplicationPtr 表示整个stk程序。

IAgStkObjectRootPtr 字面意思是所有stk中火箭,飞机,卫星等的根源,可以用来打开场景文件,以及获得当前场景。

IAgScenarioPtr stk场景对象,管理着所有飞行器对象,可以通过这个找到需要的飞行器对象。

IAgMissilePtr 导弹对象,stk中飞行器对象之一其他还有卫星飞机等不一一列举,都可以从根据stk软件界面中关键字然后在头文件中查找得到,有设置轨迹等函数,stk软件中对象的右键菜单里面的功能都可以通过这些对象中的函数实现。

IAgAnimationPtr 动画对象,有控制动画开始停止等的函数。

2.在界面上拖拽一个QAxWidget,设置好需要的stk插件,用来显示stk的系统图等

3.代码起始部分

::CoInitialize(NULL);

//创建stk程序对象

IAgSTKXApplicationPtr app;

app.CreateInstance(__uuidof(AgSTKXApplication));

//创建根对象,从这个root可以得到其他各种对象然后调用需要的对象中的函数,实现想要的效果。

 IAgStkObjectRootPtr root;

root.CreateInstance(__uuidof(AgStkObjectRoot));

3.结束时别忘记释放资源

root.Release();

app.Release();

::CoUninitialize();


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16230次
    • 积分:368
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论