模块执行创建图形的应用程序
MCCRaitForFigures
MATLAB® Compiler SDK™ 产品向其创建的 COM 组件中的每个类添加了一个 MCRWaitForFigures 方法 MCRWaitForFigures 不接受任何参量。您的应用程序可以在执行期间随时调用 MCRWaitForFigures。
MCRWaitForFigures 的目的是只要显示在封装的 MATLAB 代码中创建的图形,就会模块调用程序的执行。通常在以下情况下使用 MCRWaitForFigures:
有一个或多个打开的图形是由编译器创建的 COM 对象实例创建的。
显示图形的方法需要用户输入才能继续。
调用图形的方法是从控制台程序中的
main()调用的。
调用 MCRWaitForFigures 时,如果调用对象创建的任何图形保持打开状态,则调用程序的执行将被阻止。
小心
调用 MCRWaitForFigures 方法时要小心。从 Microsoft® Visual Basic® UI 或 Microsoft Excel® 等交互式程序调用此方法可能会导致应用程序挂起。此方法仅应从基于控制台的程序调用。
使用 MCRWaitForFigures 模块执行
下面的示例说明如何在 Microsoft Visual C++® 控制台应用程序中使用 MCRWaitForFigures。该示例使用编译器创建的 COM 对象;该对象封装了绘制简单绘图的 MATLAB 代码。
为您的源代码创建一个工作文件夹。在此示例中,该文件夹为
D:\work\plotdemo。在此文件夹中创建以下 MATLAB 文件:
drawplot.m function drawplot() plot(1:10);使用编译器创建具有以下属性的 COM 组件:
组件名称 plotdemo类名 plotdemoclass版本 1.0注意
您无需使用 COM 组件编译器,只需在 MATLAB 提示符下输入以下命令即可创建该组件:
mcc -d 'D:\work\plotdemo\src' -v -B 'ccom:plotdemo,plotdemoclass,1.0' 'D:\Work\plotdemo\drawplot.m'
在名为
runplot.cpp的文件中创建一个 Visual C++ 程序,并在其中包含以下代码:#include "src\plotdemo_idl.h" #include "src\plotdemo_idl_i.c" int main() { // Initialize the COM library HRESULT hr = CoInitialize(NULL); // Create an instance of the COM object you created Iplotdemoclass* pIplotdemoclass = NULL; hr = CoCreateInstance(CLSID_plotdemoclass, NULL, CLSCTX_INPROC_SERVER, IID_Iplotdemoclass, (void **)&pIplotdemoclass); // Call the drawplot method hr = pIplotdemoclass->drawplot(); // Block execution until user dismisses the figure window hr = pIplotdemoclass->MCRWaitForFigures(); // Uninitialize COM CoUninitialize(); return 0; }在 MATLAB 命令行窗口中,按如下方式构建应用程序:
mbuild runplot.cpp
运行该应用程序时,程序会在 MATLAB 图形窗口中显示从 1 到 10 的图。当您关闭该图形时,应用程序结束。
注意
要查看在没有调用
MCRWaitForFigures的情况下会发生什么,注释注释掉该调用,重建应用程序并运行它。在这种情况下,图形被绘制出来并在应用程序退出时立即被销毁。