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