VB6.0与MC简单操作
mathcad吧
全部回复
仅看楼主
level 11
vv_0147 楼主
高手可以略过了。新手可以看看。
偶然的机会下载了,MathCad2001i,听了版主“老朱”讲的2001i功能比较全,下载了一直存在硬盘里。
昨天闲着没事,就打开了目录,在 例程的目录里尽然出现了Mathlab,VBasic,起初知道MC能调用Excel等等。但是发现有VB(见图1),突然眼前一亮。
图1 MC例程中VB目录
VB6.0可能大家用的比较少了,不得不说VB6.0中的OLE这个控件实在太棒了(在.net以后都取消这个控件)。
简单看了一下了,主要有这几个函数。
‘获取到对象
Set MathcadObj = MathcadOLEObject.object
‘重新计算工作表
Call MathcadObj.Recalculate
‘对工作表中的变量赋值
Call MathcadObj.SetComplex("in0", In0, 0)
‘获取数值
Call MathcadObj.GetComplex("out1", Out1Re, Out1Im)
当然这种操作比较遗憾的是肯定要安装MC.
编译后,个别时候为了不然别人看到你的MC工作表的话,可以吧isival属性设置为False即可(见图2)。
图2 编译后 隐藏MC工作表
2015年02月16日 06点02分 1
level 11
vv_0147 楼主
isival写错了,是visible
2015年02月16日 06点02分 2
早期的很多应用程序一般都会预留vb6的开发接口,不过随着vb6的淘汰,会逐步不支持,现在更多的是基于C/C++或者Python的SDK
2015年03月05日 08点03分
level 12
有兴趣细说说么?别说高手低手的,争取自己的发言权,拿出我们的说服力。论VB控件,MC吧只有两个人会用,除了你,另外那位貌似不想说。全国不会超过5个,明白了么?是继续孤独求败呢?还是独乐乐不如众乐乐呢?嗯,你可以继续保持沉默,不做分享,那就不要抱怨自己的寂寞了。
2015年02月16日 16点02分 3
“全国不会超过5个”,这话不赞成,有编程基础的人还是很多的,mc预留了接口和帮助文件就比较容易了
2015年03月05日 08点03分
“全国不会超过5个”,这话不赞成,有编程基础的人还是很多的,mc预留了接口和帮助文件就比较容易了
2015年03月05日 08点03分
@stechas 嗯,“全国只有5个”,这样说可能就不会产生误会了。
2015年03月05日 09点03分
level 12
感兴趣,期待普及教程
2015年02月17日 01点02分 4
level 11
vv_0147 楼主
Option Explicit
'学习MathCad 来百度贴吧。
Private Sub chkCheck1_Click()
If chkCheck1.Value = 1 Then
'允许工作表编辑和显示
OLE1.Visible = True
OLE1.Enabled = True
Else
'设置OLE1不显示Mathcad工作簿
OLE1.Visible = False
OLE1.Enabled = False
End If
End Sub
Private Sub cmdSubmit_Click()
Dim objMC As Object
Dim varInReal As Variant, varInImag As Variant
Dim varOutReal As Variant, varOutImag As Variant
'set a reference to the Mathcad object in the OLE container
'把OLE控件中的Mathcad对象的引用赋值给objMC
Set objMC = OLE1.object
'pass data to Mathcad worksheet via the SetComplex method
'通过SetComplex传递Mathcad表数据
'getting inputs from the contents of the textboxes
'NOTE: normally you would validate inputs here
varInReal = txtInReal.Text
varInImag = txtInImag.Text
Call objMC.setcomplex("in0", varInReal, varInImag)
'recalculate worksheet
'工作表重新计算
Call objMC.recalculate
'retrieve data from Mathcad using the GetComplex method
'使用GetComplex给MC中的数值赋值
Call objMC.getcomplex("out0", varOutReal, varOutImag)
'assign outputs to textboxes
'结果输出
txtOutReal.Text = varOutReal
txtOutImag.Text = varOutImag
End Sub
Private Sub Form_Load()
'设置OLE1不显示Mathcad工作簿
OLE1.Visible = False
'使用这个方法是不是挺棒的呢,虽然很简单,当然肯定是能够破解的,不过目前简单的测试了一下,spy,彗星小助手等是无法让工作显示出来的,也可能与我使用的软件版本是修改版的VB6.5的一部分原因。
'为防止万一,即使工作显示出来了,也让他无法编辑
OLE1.Enabled = False
'如果还还不保险,那就加个强壳吧。其实没有任何软件不被破解,微软也逃不过。
'以上纯属个人猜想
End Sub
2015年02月17日 05点02分 6
其实用VB把MC封装起来我觉得不好,我用MC就是写计算稿,封装后只有一个成果了,那我还不如直接用VB直接做了
2015年03月02日 18点03分
level 11
vv_0147 楼主
上面就是全部代码,我根据自己的理解进行了简单注释和翻译。
2015年02月17日 05点02分 7
level 12
vv的这一堆,是看明白了请举手,我是没看明白。
@vv_0147 ,这样来,我问你答。我不懂VB,但我懂科普。
你先说说VB编程能够做到什么,不能做到什么。
2015年02月17日 05点02分 8
这一段就是封装MC
2015年03月02日 18点03分
level 12
你上面程序里有很多貌似是命令的字,都是啥意思?
2015年02月17日 06点02分 9
level 12
什么叫“sub”?为什么要加“end”?
2015年02月17日 06点02分 10
sub,定义子过程。end是导致我不喜欢vb的原因,它使用“end”和“exit”等字符来标记代码块,end sub表示,这个sub代码块结束了。再比如if xxx then dosomething end if,不像其他语言if(xxx) {dosomething}简洁
2015年02月17日 08点02分
level 12
对于为对VB一点儿都不了解的朋友,我建议你一个词一个词的来解释。
还有你这段程序是干啥用的?举一个有应用情景的例子说明。
2015年02月17日 06点02分 11
level 12
“set”是啥意思?为啥你set出一个objMC之后,后面可以出现objMC的那么多“.”之后的东西?
2015年02月17日 06点02分 12
level 12
你咋知道会有那么东西可以加在“objMC”之后的?
我说“objMC.xingming=zhulaojianke”可以么?
2015年02月17日 06点02分 13
吧主要他把所有的都讲是有点难了,虽然VB相对c#等简单点,但还是不能两句话就讲清的,感兴趣的只有自己去看了,相对VB上手比较快的有大量控件可以用
2015年03月02日 17点03分
level 12
吧主不用串亲戚么
2015年02月19日 13点02分 14
level 12
串亲戚也可以无聊了看手机呀[呵呵]
2015年02月19日 15点02分 15
1