Продукт MATLAB® Compiler SDK™ добавляет MCRWaitForFigures метод к каждому классу в COM-компонентах, которые это создает. MCRWaitForFigures не берет аргументов. Ваше приложение может вызвать MCRWaitForFigures любое время во время выполнения.
Цель MCRWaitForFigures должен блокировать осуществление программы вызова, пока фигуры, созданные в инкапсулированном коде MATLAB, отображены. Обычно вы используете MCRWaitForFigures когда:
Существует одна или несколько фигур, открытых, которые были созданы экземпляром COM-объекта, созданного компилятором.
Метод, который отображает графику, требует ввода данных пользователем перед продолжением.
Метод, который вызывает фигуры, был назван от main() в консольной программе.
Когда MCRWaitForFigures называется, осуществление программы вызова блокируется, если какие-либо фигуры, созданные вызывающим объектом, остаются открытыми.
Будьте осторожны при вызове MCRWaitForFigures метод. Вызов этого метода от Microsoft® Visual Basic® UI или из интерактивной программы, такой как Microsoft Excel® может подвесить приложение. Этот метод должен быть назван только из основанных на консоли программ.
Следующий пример иллюстрирует использование MCRWaitForFigures из консольного приложения Microsoft Visual C ++®. Пример использует COM-объект, созданный компилятором; объект инкапсулирует код MATLAB, который строит простой график.
Создайте папку работы для своего исходного кода. В этом примере папкой является D:\work\plotdemo.
Создайте следующий файл MATLAB в этой папке:
drawplot.m
function drawplot()
plot(1:10);Используйте компилятор, чтобы создать 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'
Создайте программу 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;
}В Окне Команды MATLAB создайте приложение можно следующим образом:
mbuild runplot.cpp
Когда вы запускаете приложение, программа отображает график от 1 до 10 в окне фигуры MATLAB. Приложение заканчивается, когда вы увольняете фигуру.
Видеть, что происходит без вызова MCRWaitForFigures. прокомментируйте вызов, восстановите приложение и запустите его. В этом случае фигура чертится и сразу уничтожается, когда приложение выходит.