⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 调用matlab详细程序 调用matlab详细程序
💻
字号:
2003年末的时候,已经在一个项目中开始使用Matlab提供的数学函数库.效果不错.当时就想要是能够将Matlab中简单丰富的画图功能也嵌入到我的程序中而不启动Matlab环境那多好啊!

当时好像就是在simwe论坛上看到了一个帖子讲如何使用Matlab的图形函数库.也实现了一些功能,不过美中不足的是画出的图象是单独一个窗口,一看就是Matlab风格的.后来项目终止了,这个愿望也只能暂时的封存了.


后来在simwe论坛上看到SCIE的帖子,在VC中实现了Matlab图像的嵌入,感到很是振奋.不过一直没有时间好好看看他提供的源代码.

今年终于有了机会.好好看了SCIE的VC的源代码,剔除其中VC相关界面的代码,找到了核心所在:将figure函数返回的Figure句柄的父窗口设为我指定的窗口,去掉边框等饰物,就可以显现嵌入的效果了.由于我们的项目用的是BCB开发的,于是就在BCB环境下实现了Matlab图像的嵌入.

有几点和SCIE说的不尽相同:
1.mlfHGWaitForFiguresToDie();不用删掉,在调用完画图函数
        (如Vplot(HX_DOT/28, HY_DOT/28, Redone, nx/28,ny/28, Blueone,
                      mwArray("Parent"), Form1->h_a);
             mwArray h_f = get(Form1->h_a, mwArray("Parent"));
             Vset(h_f, mwArray("Visible"), mwArray("On"));)
       )后再使用mlfHGWaitForFiguresToDie();即可.

2.由于是创建了一个新窗口来容纳Figure句柄,因此退出时仅仅关闭主窗口是不行的,要在OnClose()函数中加入关闭Figure的代码:Vclose(mwArray("all"));

另外一个我想提的注意是对于Matlab中图像函数的操作一定要在初始化图像函数库后才能调用,不然会出现"需要C/C++函数库"的错误提示(这个提示让我困惑了好久)

其他就如SCIE所说,
libmmfileInitialize(); 
    libmwsglmInitialize(); 
    mlfHGInitialize(NULL,NULL); 
要放在初始化窗口时调用,
  mlfHGTerminate(); 
    libmmfileTerminate(); 
    libmwsglmTerminate(); 
要放在OnDestory()里调用。

对了,还有就是那几个lib文件,如果有def文件的话就从def文件创建;
如果没有的话可以先安装mglinstaller.exe,再由安装生成的dll文件生成(用implib命令)。

再次感谢simwe论坛,感谢SCIE,cwit等人无私奉献!!


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -