MATLAB® Compiler, SDK™ продукт добавляет MCRWaitForFigures метод для каждого класса в COM- компонентов, который он создает. MCRWaitForFigures не принимает никаких аргументов. Ваше приложение может вызвать MCRWaitForFigures в любое время во время выполнения.
Цель MCRWaitForFigures блокирует выполнение вызова программы, пока отображаются рисунки, созданные в инкапсулированном коде MATLAB. Обычно вы используете MCRWaitForFigures когда:
Существуют одни или несколько открытых рисунков, созданных образцом COM-объекта, созданного компилятором.
Метод, отображающий графику, требует входа пользователем перед продолжением.
Метод, вызывающий рисунки, был вызван из main() в консольной программе.
Когда MCRWaitForFigures вызывается, выполнение вызывающей программы блокируется, если какие-либо рисунки, созданные вызывающим объектом, остаются открытыми.
Внимание
Будьте осторожны при вызове MCRWaitForFigures способ. Вызов этого метода из Microsoft® Визуальный базовый® Пользовательский интерфейс или интерактивная программа, такая как 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
Когда вы запускаете приложение, программа отображает график от 1 до 10 в графическом окне MATLAB. Приложение заканчивается, когда вы отключаете рисунок.
Примечание
Чтобы увидеть, что происходит без вызова MCRWaitForFigures. закомментировать вызов, перестроить приложение и запустить его. В этом случае рисуется фигура и немедленно уничтожается, когда приложение выходит.