## Sample-DUIM-container library

This project contains an example program that demonstrates use of the Functional Developer DUIM-OLE-container library to support embedding of graphical objects produced by other programs. It uses the Functional Developer DUIM framework for the user interface.

See the Functional Developer "OLE, COM, ActiveX and DBMS" reference manual for documentation of the DUIM-OLE-container library which the program uses.

This example provides approximately the same simple functionality as the win32-ole-container example which uses the ole-container library for OLE support and low-level Win32 API for user interface, and the sample-ole-container example which just uses the low-level OLE API directly.

This example has the following limitations:

- It has no support for saving state to a file.
- It only supports one embedded object at a time.
- It supports only the basic OLE compound document protocols, not any of the newer optional ActiveX features.
- The embedded object cannot be moved or resized.
- It doesn't yet update the "Edit" menu by adding a command to activate the embedded server.

The program has the same basic structure as any DUIM program; it actually only uses a few things from the duim-ole-container library:

- `<container-frame-mixin>` is a superclass of the program's frame class.
- `<container-sheet-mixin>` is a superclass of the drawing area class.
- `insert-from-dialog` is called to implement the insert command.

After building the program, run it and use the "Insert Object" command from the "Edit" menu to choose an object from among those registered on your system. Some may directly draw in the container window, while others pop up a separate application window in which you create the object, which is inserted in the container when you exit the application. Some objects add their own commands to the menu bar. Click outside the object to de-activate it; double click on it to re-activate. You can invoke "New" from the "File" menu to erase the current object and enable selecting another.