The MATLAB® Compiler SDK™ product adds a MCRWaitForFigures
method
to each class in the COM components that it creates. MCRWaitForFigures
takes
no arguments. Your application can call MCRWaitForFigures
any
time during execution.
The purpose of MCRWaitForFigures
is to block
execution of a calling program as long as figures created in encapsulated MATLAB code
are displayed. Typically you use MCRWaitForFigures
when:
There are one or more figures open that were created by an instance of a COM object created by the compiler.
The method that displays the graphics requires user input before continuing.
The method that calls the figures was called from main()
in
a console program.
When MCRWaitForFigures
is called, execution
of the calling program is blocked if any figures created by the calling
object remain open.
Caution
Be careful when calling the |
The following example illustrates using MCRWaitForFigures
from
a Microsoft Visual C++® console application. The example uses
a COM object created by the compiler; the object encapsulates MATLAB code
that draws a simple plot.
Create a work folder for your source code. In this example,
the folder is D:\work\plotdemo
.
Create the following MATLAB file in this folder:
drawplot.m function drawplot() plot(1:10);
Use the compiler to create a COM component with the following properties:
Component name | plotdemo |
Class name | plotdemoclass |
Version | 1.0 |
Note: Instead of using the Library Compiler app, you can create the component by issuing the following command at the MATLAB prompt: mcc -d 'D:\work\plotdemo\src' -v -B 'ccom:plotdemo,plotdemoclass,1.0' 'D:\Work\plotdemo\drawplot.m' |
Create a Visual C++ program in a file named runplot.cpp
with
the following code:
#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; }
In the MATLAB Command Window, build the application as follows:
mbuild runplot.cpp
When you run the application, the program displays a plot from 1 to 10 in a MATLAB figure window. The application ends when you dismiss the figure.
Note:
To see what happens without the call to |