VAPS XT入门教程15.04:CodedObject机制

系列索引:VAPS XT入门教程索引

上一篇:VAPS XT入门教程15.03:UserIntegration机制

本文介绍VAPS XT工程加载VAPS XT编译生成的动态链接库,动态链接库的功能比较简单,使用OpenGL绘制一个彩色三角形,VAPS XT可以加载此dll并显示(OpenGL的开发不在此文中,具体见OpenGL入门教程索引)。

首先创建一个根工程(root project/vrpj),本文工程名为Triangle。

空白工程为:

empty

空白类

先创建一个用于生成dll的类。新建类:

new class

创建完成后会出现属性设置界面:

property

设置Affects Drawing值为ExtentAndDraw。

然后生成VS2013工程代码(默认的):

code

生成的代码如下:

vs

修改代码

VAPS XT类默认生成VS2013的工程,我们打开(一些头文件和库由VAPS XT自动配置生成)。

打开后如下:

detail

因为需要使用OpenGL的函数,所以需要添加Windows Kit的include路径。

include

我们修改vxtClsOpenGLTriangle.cpp文件中的内容。

这里简单介绍一下几个函数:

名称功能
vxtClsOpenGLTriangle构造函数
vDraw绘图函数
pGetSelectedObject绘制的对象是否可以选择/选中
vCalculateExtent对象缩放
CanRotate对象是否可以旋转
vRotate对象旋转角度

包含头文件:

1
#include "vxtRTDrawMode.h"

我们在vDraw()函数中添加代码

VS2013工程除了标准的Release/Debug外还包括StaticOGL等配置。

下表是对应关系。

VS类型VAPS XT 类型
StaticOGLwogl
StaticOGLDebugwogl_d
StaticOGLDebugWithExportswogl_multi_dll_d
StaticOGLWithExportswogl_multi_dll

编译生成结果是DLL,DLL所绘制的图像是由vDraw()函数中的标准OpenGL函数绘制的。

build

结果为:

result

CodedObject是dll源码文件夹,lib文件夹是VS2013编译生成的VAPS XT需要的obj文件,temp是VS2013编译临时文件夹。

加载DLL

先新建一个Coded Implementation

imp

设置名称,在DLL Path字段打开dll所在的文件位置。

点击Ok之后,就会在之前的class内部新建一个Imp。

result

如果双击打开的话什么都没有。

显示

新建一个Format

format

将OpenGLTriangle拖拽到Format的内部,然后就会在预览窗口立刻显示OpenGLTriangle中用OpenGL写的多色三角形。

result

扩展

将OpenGLTriangle控件拖拽到窗口后自动显示控件内容,你想到了什么?官方提供的点线圆等控件也是这种操作。我们打开官方控件所在的文件目录(VAPS XT入门教程09:程序目录说明中介绍过)。

graphicprimitives

可以看到每个控件都对应着一个dll文件,我们打开WideText.cimp文件

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE object_implementation PUBLIC "-//PresagisCanada//DTD VapsXT 18.0" "file:///C:/VAPSXTDTD/VapsXT_18.dtd">

<object_implementation impl_name="WideText" cpp_file_dir="%VAPSXT_DIR%\src\XTObjects\GraphicalObjects\WideText" header_file_dir="%VAPSXT_DIR%\src\XTObjects\GraphicalObjects\WideText" class="WideText">
<coded_object_implementation dll_name="vxtClsWideText.dll" path=".\\"/>
</object_implementation>

可以看到就是使用CodedObjects方法。

也就是说VAPS XT编辑器的实时效果预览功能就是靠CodedObjects特性。

这个机制由VS编译出DLL,所以此机制只支持Windows,而官方的编辑器也是使用这种机制,所以官方编辑器只支持Windows。

扩展2

群友提出的问题,如果VAPS XT的dll里面调用了另一个dll怎么办?

经过测试,VAPS XT dll依赖的dll需要放置于环境变量目录中,否则会找不到依赖,提示dll加载错误。

说明

下一篇:VAPS XT入门教程15.04.01:显示视频

技术交流群,欢迎加入讨论。这个圈子很小,大佬可能没兴趣加这些群聊社区之类的。所以只能带你入门,当然,欢迎大佬指导

qq 672991841


VAPS XT入门教程15.04:CodedObject机制
https://blog.jackeylea.com/vapsxt/vapsxt-load-vapsxt-dll/
作者
JackeyLea
发布于
2021年6月22日
许可协议