打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MATLAB ActiveX应用集成
1、ActiveX简介
COM(Component ObjectModel,组件对象模型)并不是一种计算机语言,而是一种协议,或称为一组规范,它建立了一个软件模块与另一个软件模块之间的连接,从而使得两个软件模块之间可以通过一个“接口”进行通信。通常以win32动态链接库DLL或者可执行文件EXE的形式发布的可执行代码。COM组件是由COM类生成的具体实例,是提供给用户的以对象形式封装起来的实体。
COM特点:COM组件式动态链接的;组件是完全与语言无关的;可以以二进制的形式发布;在不妨碍用户程序正常运行的情况下被升级成新的版本。
ActiveX是在COM技术基础上派生出的一个标准协议,是Microsoft对于一系列策略性面向对象程序技术和工具的总称。主要用于开发应用程序或Web页面扩展特性的直观组件。
ActiveX特点:
(1) 是一种面向对象的组件系统,每个对象都有自己的属性和方法。
(2)其开发和使用与具体的语言无关,当作预装配组件,用于开发客户程序。
(3) 使得不同语言开发的软件构件可以在单机及网络环境下使用。
服务内容:
(1)自动化服务器(ActiveX AutomationServers),如服务器过滤器、HTML数据流控制等。
(2)自动化控制器(ActiveX AutomationController)。
(3)控件(ActiveXControl):等价于以前的OLE或OCX控件。一个典型的控件包括设计与运行时的界面、定义的方法和属性以及激活控件的事件。
(4)文档(ActiveXDocument):用于在Web浏览器中浏览非HTML文档。
(5)容器(ActiveXContainers):可以作为自动化服务器、控件和文档宿主的应用程序,用于从客户端或服务器端操纵ActiveX控件和java程序、传递数据和协调它们之间的操作。
2、MATLAB作为ActiveX的客户端应用
作为ActiveX的客户端,MATLAB实际上是一个ActiveX容器,可以创建并控制在其中的ActiveX对象、设置ActiveX对象属性、调用ActiveX对象方法及触发其事件。步骤:创建ActiveX对象;设置对象属性;调用对象方法;释放对象。
ActiveX对象的操作命令:
命令(还是函数)(加参数)
作用
actxcontrol
创建一个ActiveX控制(组件)
actxserver
创建一个ActiveX自动化服务器
set
写组件对象的一个属性
get
读组件对象的一个属性值、获得属性描述
invoke
调用组件对象的一个方法、获得方法描述
events
获得组件的事件
propedit
请求ActiveX控制显示内建的属性页
delete
删除一个ActiveX对象
release
释放一个ActiveX对象
H=actxcontrol(progid[,position[,handle…[,callback,{event1,eventhandler1;…event2,eventhandler2;}]]])
参数progid为生成组件的名称字符串;position为位置矢量,包含x, y, xsize, ysize,pixel(单位),默认[20 20 6060];handle为生成组件的图形窗口figure的句柄,默认为gcf(当前图形窗口句柄);callback为回调函数的名字;{}中的event是用于标识事件种类的系统预定义的ID,eventhandler是处理事件的M函数名,接收可变数目的参数。上述所有函数传递给MATLAB的事件参数中包含一个结构体,保存了处理函数所需要的主要信息,在处理事件函数中可以据此结构来判断事件的类型并获取相关的参数,其结构如:
域名
作用
格式
Type
Event Name
char array
Source
Control Name
MATLAB COM class
EventID
Event Identifier
double
Event Arg Name 1
Event Arg Value 1
As passed by the contro
Event Arg Name 2
Event Arg Value 2
As passed by the contro
etc.
Event Arg N
As passed by the contro
release(handle);
delete(handle);
get(handle[,’propertyname’[,arg1,arg2,…]])
set(handle[,’propertyname’[,value[,arg1,arg2,…]]])
S=invoke(hangle,methodname[,arg1,arg2,…])或handle.invoke(仅查询对象方法)
handle.events
MicrosoftMSFlexGrid作为VC++中的ActiveX组件,提供了表格显示的数据交互界面以及高度灵活的网格排序、合并和格式设置功能。MSFlexGrid.MSFlexGrid。
应用举例:
f=figure('pos',[100 100 600 400]);
h=actxcontrol('MSFlexGridLib.MSFlexGrid',[0 1 400 400],f);
nrow=3;
ncol=4;
data=rand(nrow,ncol);
set(h,'Rows',nrow+1);
set(h,'Cols',ncol+1);
for i=1:nrow
for j=1:ncol
h.Row=i;
h.col=j;
h.Text=num2str(data(i,j));
end
end
3、MATLAB的自动化服务功能
自动化服务器是一种可以由其他应用程序编程驱动的组件,其核心是包含一个或多个供其他程序创建和连接的基于IDispatch的接口。
MATLAB的ActiveX对象在注册表中的标识名为‘Matlab.Application’,它支持方法:
方法
作用
Execute
在MATLAB中执行一条命令
GetFullMatrix
从MATLAB中读取一个一维或二维数组的数据
PurFullMatrix
向MATLAB中写入一个一维或二维数组的数据
Execute(CommmandStr)
PurFullMatrix(Name,Workspace,(double)pr,(double)pi);
GetFullMatrix(Name,Workspace,(double)pr,(double)pi);
在客户程序中调用MATLAB服务功能的一般步骤:创建一个MATLAB应用对象;从客户程序向MATLAB工作区传递数据;执行MATLAB的处理命令;从MATLAB工作区读入数据到客户程序。
应用实例:VB作为一个客户程序编写语言;Delphi与MATLAB相结合。略。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【经验交流】matlab自定义回调函数语法规则
Node.js学习(九)
[转载]Matlab中的图形句柄(转载)
9.3 图形句柄
VC的另类数据库编程
com组件和一般dll的区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服