Блокируйте Выполнение Приложений, которые Создают фигуры

MCRWaitForFigures

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

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

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

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

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

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

Внимание

Будьте осторожны при вызове метода MCRWaitForFigures. Вызов этого метода от Microsoft® Visual Basic® UI или из интерактивной программы, такой как 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
    ClassName 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. прокомментируйте вызов, восстановите приложение и запустите его. В этом случае фигура чертится и сразу уничтожается, когда приложение выходит.