关于VC与VB调用matlab的exe文件.

前些天帮同学调试关于matlab的毕业设计,图像处理的。具体的实现倒没什么,开始需要我帮忙的是在VC里显示MATLAB的处理结果。

我非常偷懒的想法是,直接用一个按钮响应点击事件,然后处理函数里调exe.这样有一个坏处是,其实跟VC没什么关系,之间也没有交互。

下面是生成exe的参考

一、生成独立可执行的程序(exe文件)步骤

    1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0。
    2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。
    3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;

     PS:我使用的就是mcc命令。这里关于deploy使用都是说请看帮助,其实也没什么,就是新建一个deploy工程,在右边会有让引入主文件,和资源的窗口,把要生成EXE的.m文件引入,把要处理的图片之类的资源引入,使用mcc命令即可。
注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname;
     4、安装<matlab path>\toolbox\compiler\deploy\win32目录下的MCRInstaller。

第四步的MCR是为了在没有matlab的电脑环境下运行,这一步我没有细看。

生成EXE后在VC的按钮响应函数里调用

WinExec("xxx.exe",1)//参数是文件路径名,与显示方式。

后来同学的老师不满意,并且要求VB,虽然我没有用过VB而且这个要求很XX,可还是能帮就帮了。

具体如下:

单击工程菜单——>部件——>部件对话框——>控件选项卡中选择“Microsoft Windows Common Control6.0”点击确定按钮,如图4.5。之后可以看到工具栏中增加了项目,将它从工具栏拖拽到设计界面中。 然后添加并设置所需要的功能的按钮,进行工具栏的设计,如图4.6

 关于VC与VB调用matlab的exe文件._第1张图片

4.5添加“Microsoft Windows Common Control6.0”控件

Fig. 4.5 Add “Microsoft Windows Common Control6.0”control

对了,这里可能会出现无法注册的问题,使用管理员模式打开工程,使用浏览(B)去添加部件。

或者把.ocx文件拷贝到c:\windows\System32 然后运行cmd

使用命令

Regsvr32 C:\windows\system32\Mscomm32.ocx

 关于VC与VB调用matlab的exe文件._第2张图片


4.6制作工具栏

Fig. 4.6 Make the toolbar


设计图形显示界面:

完成菜单栏,工具栏的创建以后,可以在窗体中创建两个picture图片框,在窗体上建立一大一小两个水平排列的图片框,左边的图片框(名称:picture1)小一点,用来显示待处理图片,右边的图片框(名称:picture2)大一点,用来显示处理后的效果图片。整个电弧图像处理系统的界面完成图如图4.7所示。


4.7 界面完成图

Fig. 4.7 The completed interface diagram

请输入文件名后面是控件Text1

打开按键的点击响应函数是

picname = Me.Text1.Text
<pre name="code" class="html"><p>Picture1.Picture = LoadPicture(App.Path & "\" & picname)</p>

 
 

如果路径不对,可以使用绝对路径,类似

Picture1.Picture = LoadPicture("F:\java\" & picname)

特别提醒一下,使用24位真彩以上的图片读不出来,VB只支持jpg,bmp格式,像png可以用图画打开后另存修改后缀。

为工具栏上的各种实现电弧图像处理的功能按钮添加相应功能的代码,实现VBMATLAB图像处理程序的调用,对于选则某种功能按钮实现相应功能

<pre name="code" class="vb">Private Sub Command1_Click()
Set matlab = CreateObject("matlab.application")
Dim matlab As Object
Clipboard.Clear
matlab.execute ("x=[1 2 4],y=[4 6 7];plot(x,y)")  '此处输入matlab中命令
matlab.execute ("print -dbitmap;close")    '把所作图以位图形式保存在剪贴板中,并关闭
Me.Picture2.Picture = Clipboard.GetData()  '将剪贴板中图像在image控件中显示出来
End Sub


 
 
因为同学电脑超慢,一点儿也不想改matlab生成EXE部分。这里我用了一个笨方法,把处理的语句都放到
matlab.execute ()

时间与能力有限,有个问题没解决,我想直接掉用

Shell "nouse1.exe  " 
并且能在VB里截取matlab中图像并关闭matlab.exe。如何处理,有想法的请指教。



你可能感兴趣的:(matlab,exe,vb,VC,控件)