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