Блочное выполнение приложений, которые создают фигуры

MCRWaitForFigures

MATLAB® Compiler, SDK™ продукт добавляет MCRWaitForFigures метод для каждого класса в COM- компонентов, который он создает. MCRWaitForFigures не принимает никаких аргументов. Ваше приложение может вызвать MCRWaitForFigures в любое время во время выполнения.

Цель MCRWaitForFigures блокирует выполнение вызова программы, пока отображаются рисунки, созданные в инкапсулированном коде MATLAB. Обычно вы используете MCRWaitForFigures когда:

  • Существуют одни или несколько открытых рисунков, созданных образцом COM-объекта, созданного компилятором.

  • Метод, отображающий графику, требует входа пользователем перед продолжением.

  • Метод, вызывающий рисунки, был вызван из main() в консольной программе.

Когда MCRWaitForFigures вызывается, выполнение вызывающей программы блокируется, если какие-либо рисунки, созданные вызывающим объектом, остаются открытыми.

Внимание

Будьте осторожны при вызове MCRWaitForFigures способ. Вызов этого метода из Microsoft® Визуальный базовый® Пользовательский интерфейс или интерактивная программа, такая как Microsoft Excel® может повесить приложение. Этот метод должен вызываться только из консольных программ.

Используйте MCRWaitForFigures для блокирования выполнения

Следующий пример иллюстрирует использование MCRWaitForFigures из Microsoft Visual C++® консольное приложение. В примере используется COM-объект, созданный компилятором; объект инкапсулирует код MATLAB, который рисует простой график.

  1. Создайте рабочую папку для исходного кода. В этом примере папка D:\work\plotdemo.

  2. Создайте следующий файл MATLAB в этой папке:

    drawplot.m
    
    function drawplot()
        plot(1:10);
  3. Используйте компилятор для создания COM- компонента со следующими свойствами:

    Имя компонентаplotdemo
    Имя классаplotdemoclass
    Версия1.0

    Примечание

    Вместо использования приложения Library Compiler можно создать компонент, задав следующую команду в подсказке MATLAB:

    mcc -d 'D:\work\plotdemo\src' -v -B    'ccom:plotdemo,plotdemoclass,1.0' 
       'D:\Work\plotdemo\drawplot.m'
    
  4. Создайте программу Visual C++ в файле с именем runplot.cpp со следующим кодом:

    #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

    Когда вы запускаете приложение, программа отображает график от 1 до 10 в графическом окне MATLAB. Приложение заканчивается, когда вы отключаете рисунок.

    Примечание

    Чтобы увидеть, что происходит без вызова MCRWaitForFigures. закомментировать вызов, перестроить приложение и запустить его. В этом случае рисуется фигура и немедленно уничтожается, когда приложение выходит.