SCIE 发表于 2004-6-21 22:40:34

【原创】MATLAB与VC界面混合编程尝试

本帖最后由 SCIE 于 2010-5-12 16:16 编辑

虽然MATLAB可以制作GUI界面,但其界面元素还是太少,而且当界面元素教多时会严重影响执行速度。

用VC来制作GUI界面不但界面元素丰富而且可以定制,可以实现非常美观的界面,而且能够保证复杂界面的执行速度,但MATLAB的图形输出只能在自己的Figure窗口上,无法完美融合到VC做的界面中,这是用VC做界面的最大障碍。

本程序尝试将MATLAB的Figure窗口嵌入到VC窗口中,实现MATLAB窗口与VC 窗口的结合。

示例程序效果示意图及源程序如下:

[ 本帖最后由 SCIE 于 2007-6-13 08:50 编辑 ]

SCIE 发表于 2004-6-21 22:41:42

回复: 【原创】MATLAB与VC界面混合编程尝试

本帖最后由 messenger 于 2009-7-17 11:28 编辑

示例程序已经更新,请各位测试一下,欢迎提出您的意见或建议。

lxdawn wrote:
你是怎么做的?是用MATCOM么?

我以前用MATCOM做过。虽然MATCOM支持直接将图形绘制在其它程序制作的窗口上,但MATCOM的最终版本4.5做出的图形仍然不够美观,而且还有很多绘图命令不能支持。
这个就是用MATLAB做的。

[ 本帖最后由 SCIE 于 2007-6-13 09:30 编辑 ]

lxdawn 发表于 2004-6-23 10:17:57

回复: 回复: 回复: 【原创】MATLAB与VC界面混合编程尝试

本帖最后由 messenger 于 2009-7-17 11:29 编辑

SCIE wrote:
lxdawn wrote:
你是怎么做的?是用MATCOM么?
我以前用MATCOM做过。虽然MATCOM支持直接将图形绘制在其它程序制作的窗口上,但MATCOM的最终版本4.5做出的图形仍然不够美观,而且还有很多绘图命令不能支持。
这个就是用MATLAB做的。

那你是用MATLAB的C/C++图形库和数学库做的喽,是么?
可偶还是不明白你是怎么只用这些库把图画到窗体上的
我在研学论坛上帖的那个画到窗体上的例子是用MATCOM做的

正如你所说,MATCOM在坐标轴范围小于1时就没有标注了,还必须自己
set
是挺恶心的。

SCIE 发表于 2004-6-23 16:08:48

回复: 回复: 【原创】MATLAB与VC界面混合编程尝试

本帖最后由 messenger 于 2009-7-17 11:30 编辑

stone_3rd wrote:
怎样消除的闪烁现象啊

原来的做法是先生成一个可见绘图窗口,再把它调整到指定位置,所以会有闪烁现象。
现在的做法是生成不可见绘图窗口,把它调整到指定位置后再显示出来,这样就不闪了。

SCIE 发表于 2004-6-23 16:12:13

回复: 回复: 回复: 回复: 【原创】MATLAB与VC界面混合编程尝试

lxdawn wrote:

那你是用MATLAB的C/C++图形库和数学库做的喽,是么?
可偶还是不明白你是怎么只用这些库把图画到窗体上的
我在研学论坛上帖的那个画到窗体上的例子是用MATCOM做的

正如你所说,MATCOM在坐标轴范围小于1时就没有标注了,还必须自己
set
是挺恶心的。

图形还是画到MATLAB的Figure窗口上,我只是把MATLAB的Figure窗口去掉标题栏、去掉边框并且固定到VC窗口的指定位置,以模拟图形绘制到VC窗口上的效果。这样做还有一个好处,就是原先Figure窗口的鼠标、键盘的回调函数仍然可以使用。

SCIE 发表于 2004-6-24 20:58:51

回复: 【原创】MATLAB与VC界面混合编程尝试

本帖最后由 messenger 于 2009-7-17 11:31 编辑

源码经过好几次修改,终于算是比较满意了,今天把它传上来(在二楼的帖子里)。

       cwit,在这个程序中我把mcc生成的代码中用不着的全都删掉了,执行速度上应该能有所改善,但对这个程序影响不大。明显的变化是编译后的exe变小了,比原来整整小了12K。

       我想如果要提高编译后程序的执行效率的话,除了在编译前m文件上尽量优化外,优化编译后的cpp代码,去掉冗余的代码应该也是一种有效的方法。一般都说mcc生成的代码可读性很差,但仔细研究一下发现也不是那么难理解。虽然mathworks没有公布图形函数库的使用说明,但利用其数学函数库和图形函数库直接编写程序应该也不是很困难的事情。

syfmatlab 发表于 2004-6-27 10:20:12

junziyang 发表于 2004-7-1 20:22:15

回复: 【原创】MATLAB与VC界面混合编程尝试

高手啊!佩服ing!
matlab的绘图窗口的标题和边框可以用m文件中的代码去掉吗?如果可以,能大体说一下如何实现吗?谢谢!

SCIE 发表于 2004-7-1 21:19:13

回复: 【原创】MATLAB与VC界面混合编程尝试

junziyang,你好。这两个功能都不能用m代码实现,在二楼附带的例子程序中可以找到实现该功能的C代码.

Genial 发表于 2004-7-2 13:38:57

回复: 【原创】MATLAB与VC界面混合编程尝试

我没有采用经过m文件编译的方式
完全采用数学库函数和图形库函数,根据SCIE的提示写了一个类似的程序
练习了一下,感觉其中还是有些收获的。

junziyang 想实现的问题,记得以前曾经讨论过
可以用mex函数调用Win32API函数来实现
板上有个例子,自己好好找找看吧

主动悬架 发表于 2004-7-18 01:14:20

ArenAK1 发表于 2004-7-18 09:39:20

SCIE 发表于 2004-7-18 11:55:53

回复: 【原创】MATLAB与VC界面混合编程尝试

关于编译环境的设置,请参照如下帖子:

【原创】实践经验:在VC中使用mcc编译得到的CPP文件
http://www.simwe.com/cgi-bin/ut/threaded_show.cgi?tid=31296&pid=165105

ArenAK1 发表于 2004-7-18 16:30:44

SCIE 发表于 2004-7-18 22:52:07

回复: 【原创】MATLAB与VC界面混合编程尝试

由于程序中调用了MATLAB数学函数库或图形库中的函数,所以需要附带MATLAB的这些函数库才能在没有安装MATLAB的机器上运行。幸好MATLAB已经把这两个库的函数打包了,这样就省得我们一个一个去搜集了。该文件就是位于matlab安装目录中extern\lib\win32子目录中的mglarchive.exe。运行该程序即可自动把需要的库函数解压到当前目录中,把编译好的程序放到该目录中拷贝到未装matlab的机器上即可实现脱离matlab。

ArenAK1 发表于 2004-7-18 23:33:07

SCIE 发表于 2004-7-19 08:02:25

回复: 【原创】MATLAB与VC界面混合编程尝试

其实GUI窗口与一般的Figure绘图窗口是没有区别的,你照样可以在那个例子中用uicontrol添加按钮、文本框等。甚至整个主程序界面完全是matlab的GUI窗口。本例之所以采用VC来设计主界面是因为CWIT提到界面元素庞杂的MATLAB界面运行速度比较慢,而且MATALB本身提供的控件比较贫乏、单调。

ArenAK1 发表于 2004-7-24 23:33:36

SCIE 发表于 2004-7-25 08:46:04

回复: 【原创】MATLAB与VC界面混合编程尝试

既然这样我想还是把所有的图形都用MATLAB画比较好一些。

ArenAK1 发表于 2004-7-25 10:21:05

页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【原创】MATLAB与VC界面混合编程尝试