IDL与C的数据传递方法研究IDLDrawWidget_第1页
IDL与C的数据传递方法研究IDLDrawWidget_第2页
IDL与C的数据传递方法研究IDLDrawWidget_第3页
IDL与C的数据传递方法研究IDLDrawWidget_第4页
IDL与C的数据传递方法研究IDLDrawWidget_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 组件使用新建一C#Windows程序;添加组件到程序中将该控件移动到Form上添加两个按钮,并修改名称2. 组件初始化初始化的代码如下,/设置IDL的路径 this.axIDLDrawWidget1.IdlPath = "C:Program FilesITTIDL71binbin.x86" /初始化标志 int initFlag = this.axIDLDrawWidget1.InitIDL(int)this.Handle); if (initFlag <= 0) MessageBox.Show("IDL初始化失败,请检查!"); retur

2、n; ;/IDL组件 this.axIDLDrawWidget1.CreateDrawWidget();3. 功能调用IDLDrawWidget组件具备IDL命令行的执行功能,即方法ExecuteStr(string strCommand),其中strCommand是命令字符串;调用IDL的功能形式上有两种,即IDL的pro源码文件和sav文件。二者在调用的时候稍微有些不同。如果是pro源码文件,需要先编译再调用。this.axIDLDrawWidget1.ExecuteStr(".compile ''"); this.axID

3、LDrawWidget1.ExecuteStr("idlfunction"); 如果是sav文件,需要先restore再调用。this.axIDLDrawWidget1.ExecuteStr("restore 'idlfunction.sav'"); this.axIDLDrawWidget1.ExecuteStr("idlfunction"); 4. 数据传递仅仅在上面步骤中,实现了功能的调用是远远不够的,因为在实际处理中肯定要牵涉到数据的传递。这样,怎么快速的实现数据传递是混合编程必须要解决的关键问题之一。IDLD

4、rawWidget组件具备SetNamedArray、SetNamedData和CopyNamedArray这样的方法进行数组数据的共享。只需要二者具备同样的类型和维数即可进行数据交换,支持的数据类型见表格。IDL类型ActiveX类型IDL_TYPE_BYTEUT_UI1 unsigned charIDL_TYPE_BYTEVT_I1 - signed charIDL_TYP_INT VT_I2 - signed shortIDL_TYP_LONG VT_I4 - signed longIDL_TYP_FLOAT VT_R4 - floatIDL_TYP_DOUBLE VT_R8 - dou

5、ble组件常用方法列表CopyNamedArray:将IDL下的数组内容copy到组件使用环境中的OLE变量数组;CopyWindow:将IDLDrawWidget组件内显示的内容copy到Windows剪贴板中;CreateDrawWidget:在ActiveX控制操作中创建IDLDrawWidget控件;DoExit:退出ActiveX控件并释放IDL占用的资源;ExecuteStr:执行IDL命令语句字符串;GetNamedData:根据变量名获取IDL下该变量的值;InitIDL: IDL运行环境初始化;InitIDLEx:可传入参数的IDL运行环境初始化;Print:将ActiveX

6、组件中显示的内容输出到默认打印机;RegisterForEvents:IDLDrawWidget组件是否传递程序事件;SetNamedArray:根据指定的名字和内容创建一个IDL下的数组。基本类型见表格。SetNameData:根据指定的变量名和值创建一个IDL下的变量。SetOutputWnd:将IDL的输出发送到指定窗口;VariableExists:根据变量名判断IDL下该变量是否存在;如下面为实现变量和数组交换的功能代码/初始化定义变量 object objStr ="abc" /定义变量 this.axIDLDrawWidget1.SetNamedData(&q

7、uot;var", objStr); /编译IDL功能代码并传入单个变量 this.axIDLDrawWidget1.ExecuteStr(".compile 'exchangeV'"); this.axIDLDrawWidget1.ExecuteStr("exchangeVar, var = var"); /将IDL中修改过的变量获得并对话框显示 objStr = this.axIDLDrawWidget1.GetNamedData("var"); /定义数组 int, dataarr = ne

8、w int3, 2 6, 4 , 12, 9 , 18, 4 ; /将数组内容copy到IDL下的变量arr中 this.axIDLDrawWidget1.SetNamedArray("arr",dataarr,true); /编译IDL功能代码并传入数组 this.axIDLDrawWidget1.ExecuteStr(".compile 'exchangeA'"); this.axIDLDrawWidget1.ExecuteStr("exchangeArr, arr = arr"); /获取IDL中修改过的数组 objStr = this.axIDLDrawWidget1.CopyName

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论