OLE concepts and definitions
Before building an OLE-enabled application, it is helpful to become familiar with the following concepts and definitions.
OLE client
An OLE client is an application that accesses and uses the functionality and content of a OLE server application. The communication between an OLE client and an OLE server is through OLE object interfaces. VA Smalltalk clients can connect to OLE servers regardless of the server's implementation language.
OLE server
An OLE server is the provider of a component and its constituent objects. You can implement OLE servers as DLLs or as complete applications operating in an execuatable.
Compound document
A compound document is an application that results in the seamless integration of data of different formats, such as spreadsheets, sound clips, text, and bitmaps. A compound document is an OLE client that integrates data and functionality from a variety of OLE servers. End users perceive they are using a single application that provides all the function of the respective servers.
OLE container
An OLE container is an OLE client that consumes compound-document objects, OCXs, or both. OLE containers typically provide:
•Storage for the contained OLE objects
•A place in their user interface for the OLE objects to display their contents
•Access to the editing facilities of the server for the OLE objects.
Embedded OLE objects
An OLE object is embedded in its container when its data is physically stored with the container. As a result, the OLE object becomes a physical part of its container.
Linked OLE objects
An OLE object is linked to its container when its data continues to physically reside where it was initially created. Only a reference (that is, a link) to the object and the appropriate presentation data are maintained by the container.
Activation
Activation is the process of making an OLE server active on the contents of one of its embedded or linked OLE objects that are in a container. A container does not directly reference or modify the content of its contained OLE objects, so the respective servers are activated to provide facilities so you can edit and manipulate the contained content.
Verb
OLE servers are activated by invoking an action on them; the action is called a verb. The most common verb is the edit verb, which activates the server in a state for editing the contents of the embedded or linked object. OLE servers always designate one verb as the primary verb, which is most often the edit verb. However, a sound or video object may have play as its primary verb and edit as a secondary verb. Many OLE document servers support more than one verb.
A container typically displays an OLE object's verbs as commands on one of its own menus. When you select a verb, the container passes it to the server for execution. When the server receives a verb, it may open as usual in its own window to allow you to edit the OLE object, or it may attempt to interact with the user directly inside the container's window. The latter is called in-place activation.
In-place activation
OLE objects that are embedded in a container application can be edited (that is, activated) in place, which means that all maintenance of the object takes place within the container. When an OLE object is activated in place, the menu bar for the container becomes a mixture of the current container menus and the menus provided by the server. In addition, real estate in the container's windows is negotiated for any of the tool bars and floating palettes that the server provides for editing the object.
Since the content of a linked OLE object is not stored with the container, linked objects cannot be activated in place; they are activated in the windows of their server.
OLE automation client
An OLE automation client is an application that accesses functionality provided by third-party applications. OLE automation is a standard that allows communication between applications. For example, a program can query and set the current text selection in a Microsoft Word document through OLE automation.
OLE automation server
An OLE automation server makes functionality available by exposing OLE objects. These objects have properties and methods. An OLE property is a value that an application can get and set. An OLE method is a multi-parameter function that is called by an automation client and implemented by an automation server.
OLE custom control (OCX)
An OCX is a custom Windows control that is built with OLE technologies. Unlike a Windows control, an OCX may or may not have a visual representation. OCXs build on almost all the base OLE technologies. For example, an OCX uses:
•In-place activation for its content display in a client application's user interface
•The server side of OLE automation for control of its properties and behavior
•The client side of OLE automation for event notification from the server to the client.
Properties
A property is a data attribute (or a variable) of an OLE automation object or an OCX that is retrieved or modified by a container. Properties of an OLE automation or OCX object are identified by both a unique name and a unique numeric value.
Ambient properties
Ambient properties are attributes of an OCX container that are supplied on request to any of its embedded OCXs. These properties define the environment (or ambiance) for all OCXs used in an application, for example, default colors and fonts. OCXs typically initialize their state through ambient-property requests to the container. However, containers may explicitly override an OCX property that was obtained from its ambient property.
Event
An event is a notification that an OCX sends to its container when the user triggers an event in that OCX, for example, a mouse-click on the OCX. An OCX uses events to transform a user's action into a precise trigger on its container, which in turn picks up the event and executes some code.
DISPID
Each method or property of an OLE automation or OCX object has a unique name and a unique DISPID (a 32-bit number). A DISPID is the preferred way to access a method or property because it reduces expensive string lookup operations and is independent of the national language used to define the names.
Licensing
Licensing is a mechanism that OCX vendors use to restrict the use of their OCX in container applications. Licensed OCXs provide a key that a container must use to activate the OCX at run time.