【原创】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 编辑 ]
回复: 【原创】MATLAB与VC界面混合编程尝试
本帖最后由 messenger 于 2009-7-17 11:28 编辑示例程序已经更新,请各位测试一下,欢迎提出您的意见或建议。
lxdawn wrote:
你是怎么做的?是用MATCOM么?
我以前用MATCOM做过。虽然MATCOM支持直接将图形绘制在其它程序制作的窗口上,但MATCOM的最终版本4.5做出的图形仍然不够美观,而且还有很多绘图命令不能支持。
这个就是用MATLAB做的。
[ 本帖最后由 SCIE 于 2007-6-13 09:30 编辑 ]
回复: 回复: 回复: 【原创】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
是挺恶心的。
回复: 回复: 【原创】MATLAB与VC界面混合编程尝试
本帖最后由 messenger 于 2009-7-17 11:30 编辑stone_3rd wrote:
怎样消除的闪烁现象啊
原来的做法是先生成一个可见绘图窗口,再把它调整到指定位置,所以会有闪烁现象。
现在的做法是生成不可见绘图窗口,把它调整到指定位置后再显示出来,这样就不闪了。
回复: 回复: 回复: 回复: 【原创】MATLAB与VC界面混合编程尝试
lxdawn wrote:那你是用MATLAB的C/C++图形库和数学库做的喽,是么?
可偶还是不明白你是怎么只用这些库把图画到窗体上的
我在研学论坛上帖的那个画到窗体上的例子是用MATCOM做的
正如你所说,MATCOM在坐标轴范围小于1时就没有标注了,还必须自己
set
是挺恶心的。
图形还是画到MATLAB的Figure窗口上,我只是把MATLAB的Figure窗口去掉标题栏、去掉边框并且固定到VC窗口的指定位置,以模拟图形绘制到VC窗口上的效果。这样做还有一个好处,就是原先Figure窗口的鼠标、键盘的回调函数仍然可以使用。
回复: 【原创】MATLAB与VC界面混合编程尝试
本帖最后由 messenger 于 2009-7-17 11:31 编辑源码经过好几次修改,终于算是比较满意了,今天把它传上来(在二楼的帖子里)。
cwit,在这个程序中我把mcc生成的代码中用不着的全都删掉了,执行速度上应该能有所改善,但对这个程序影响不大。明显的变化是编译后的exe变小了,比原来整整小了12K。
我想如果要提高编译后程序的执行效率的话,除了在编译前m文件上尽量优化外,优化编译后的cpp代码,去掉冗余的代码应该也是一种有效的方法。一般都说mcc生成的代码可读性很差,但仔细研究一下发现也不是那么难理解。虽然mathworks没有公布图形函数库的使用说明,但利用其数学函数库和图形函数库直接编写程序应该也不是很困难的事情。
回复: 【原创】MATLAB与VC界面混合编程尝试
高手啊!佩服ing!matlab的绘图窗口的标题和边框可以用m文件中的代码去掉吗?如果可以,能大体说一下如何实现吗?谢谢!
回复: 【原创】MATLAB与VC界面混合编程尝试
junziyang,你好。这两个功能都不能用m代码实现,在二楼附带的例子程序中可以找到实现该功能的C代码.回复: 【原创】MATLAB与VC界面混合编程尝试
我没有采用经过m文件编译的方式完全采用数学库函数和图形库函数,根据SCIE的提示写了一个类似的程序
练习了一下,感觉其中还是有些收获的。
junziyang 想实现的问题,记得以前曾经讨论过
可以用mex函数调用Win32API函数来实现
板上有个例子,自己好好找找看吧
回复: 【原创】MATLAB与VC界面混合编程尝试
关于编译环境的设置,请参照如下帖子:【原创】实践经验:在VC中使用mcc编译得到的CPP文件
http://www.simwe.com/cgi-bin/ut/threaded_show.cgi?tid=31296&pid=165105