这一段vb代码用VC++重写,应该怎样做呢?

Anakin_Skywalker 2003-07-08 06:40:17
有一个叫做Arena的库,在vb中引用就可以直接这么用:
arenaSiman As Arena.SIMAN
Private arenaModel As Arena.Model
Try
Dim arenaApp As Arena.Application
arenaApp = GetObject("", "Arena.Application")
If arenaApp.Models.Count = 0 Then
MsgBox("No model opened. This proccess is gonna be terminated.")
Dispose()
Else
arenaModel = arenaApp.Models.Item(1)
arenaSiman = arenaModel.SIMAN
tbSpeed.Text = Me.arenaModel.RunSpeed
End If

Catch err As Exception
MsgBox(err.ToString())
MsgBox("Try opening only one model only. Process terminated.")
Dispose()
End Try

如果是VC++应该怎样引用并改写上面的代码呢?
...全文
25 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anakin_Skywalker 2003-07-09
  • 打赏
  • 举报
回复
如果是用托管扩展的VC++代码应该怎么写呢?

就是那个GetObject在托管扩展VC中的代码是什么样子的?
Anakin_Skywalker 2003-07-09
  • 打赏
  • 举报
回复
那应该怎么办呢?
kint 2003-07-09
  • 打赏
  • 举报
回复
VB中的COM引用用的是自动化机制,较为方便,但是VC中通常采用的C++调用COM的机制,较为繁琐,如果一定要在VC中使用自动化机制调用COM组件的话,则是程序员的一场噩梦,如:
Dim arenaApp As Arena.Application
arenaApp = GetObject("", "Arena.Application")
If arenaApp.Models.Count = 0 Then
这三行代码完全用C++改写的话,至少用掉30行,所以如果你真想这么做,可以自己仔细研究一下VC的自动化机制,如什么是IDispatch接口,Invoke函数的调用方法,(估计你还得了解一下自动化变量的转换机制和技巧),总之是个正常人,万不得以是不会走这条路的.
zhouyong0371 2003-07-08
  • 打赏
  • 举报
回复
找本介绍COM的书研究一下吧,看样子你的库是一个COM。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧