OLE Controls
The preferred method for creating custom controls is to use the OLE controls architecture. OLE controls are an extension of the model used by the Microsoft Visual Basic programming system. Each control is an OLE object with many standardized properties and methods. Future OLE interfaces will support a method of obtaining interface pointers (object handles) to each object in a window or region of a window by querying with a window message. Once you have an interface pointer, you can make calls to an object to retrieve or set properties, including the object's location, name, and primary value.
An application that hosts OLE controls should support the IOLEContainer interface, which allows the enumeration of embedded controls and other objects.