Support for OLE/COM
Required:
The application must be an OLE container or object server. Note that although an application can be both a server and a container, it does not have to be.
Tip: If you want to host Java™ or ActiveX controls in your application, you should choose to be an OLE container.
Recommended:
It is recommended that developers read the book "Inside COM" published by Microsoft Press. In addition to the above requirements, the following behaviors are recommended for application utilizing OLE/COM:
-
It is strongly recommended that the system provided property set implementation be used to read and write all property sets supported by an application.
-
Applications should expose all functionality through Automation & should use a dual interface to do so. A dual interface combines an IDispatch interface with a VTBL interface. For more information refer to the Automation Programmer's reference, Exposing ActiveX objects, in the Platform SDK. This facilitates scripting your application from scripting languages.
-
Applications that expose a public Automation interface should provide a type library.
-
Applications should use component categories. (In particular, containers should indicate which standard component categories they support. Also, component categories should be used in preference to adding a key such as "Control" under a component's CLSID registry key.) This recommendation allows an object to publish its capabilities to other objects. For more information refer to the Platforms SDK, Control & Container guidelines.
-
Applications should support Active Accessibility. For more information refer to information for application developers on http://microsoft.com/enable/.
Exemption:
If the product falls into one of the following categories it may be exempt from OLE support: (Be sure to review section 7 of this Handbook for a complete description of this exemption.)
-
Non-file based applications
-
Java Applications
-
Multimedia Applications such as a game or reference title
-
Utilities
-
Object Server Requirements:
-
Required:
The user must be able to drag the object to any container, including other internal documents, the desktop, or documents in another OLE-supporting application.
Required:
Object servers must pass basic OLE server functionality testing. You can test this by dragging an object created by your product into an application such as Microsoft Word.
Recommended:
In addition to the above requirements, the following behaviors are recommended for Object servers:
-
All object servers should be ActiveX Document servers.
-
Object servers should close automatically after delivering their object.
-
Container Requirements
-
Required:
Your product must pass basic OLE container functionality testing. You can test this by creating an object in any standard OLE server, such as Microsoft Word, and dragging it into your product.
Required:
Containers must provide an Object command on the Insert menu.
Required:
Containers must implement the IDropTarget and/or IDropSource interfaces for drag-and-drop functionality. This means that the application can accept drops from any IDropSource() or can drag into any IDropTarget(), or both.
Tip: If you use the Windows 95 and Windows NT common controls, or the RichEdit control for your edit controls, your application already has support for Drag and Drop.
Recommended:
In addition to the above requirements, the following behaviors are recommended for containers:
-
All containers should be ActiveX Document containers.
-
Containers should support ActiveX Accessibility.
-
Containers should provide support for modifier keys.
-
Containers should providing linking and in-place activation.
-
Containers should support the structured storage compound file format. Summary information should be usable and complete as presented by the 32-bit Microsoft Windows operating system shell.