主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

模块执行创建图形的应用程序

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 代码。

  1. 为您的源代码创建一个工作文件夹。在此示例中,该文件夹为 D:\work\plotdemo

  2. 在此文件夹中创建以下 MATLAB 文件:

    drawplot.m
    
    function drawplot()
        plot(1:10);
  3. 使用编译器创建具有以下属性的 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'
    
  4. 在名为 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;
    }
  5. 在 MATLAB 命令行窗口中,按如下方式构建应用程序:

    mbuild runplot.cpp

    运行该应用程序时,程序会在 MATLAB 图形窗口中显示从 1 到 10 的图。当您关闭该图形时,应用程序结束。

    注意

    要查看在没有调用 MCRWaitForFigures 的情况下会发生什么,注释注释掉该调用,重建应用程序并运行它。在这种情况下,图形被绘制出来并在应用程序退出时立即被销毁。