Продукт 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
. прокомментируйте вызов, восстановите приложение и запустите его. В этом случае фигура чертится и сразу уничтожается, когда приложение выходит.