Next to designing the visual user interface, deciding what form the run-time object should take is perhaps the most important issue in building an ActiveX designer. You have three choices:
The simplest approach is to replicate the design-time object as the run-time object. The advantage is that you have to write less code. You don't need to implement IactiveDesigner, and you can use the same implementations of IOleObject, IOleInPlaceObject, and IOleInPlaceActiveObject as in the visual designer.
The disadvantage, however, is that the run-time object often contains type information and code used only at design time, and not needed at run time. The increased size can degrade performance. In addition, you may need to license the run-time object separately from the visual designer. If so, you must create a separate object.
The run-time object can be private or public. If it is public, the designer must register it so other applications can use it. At run time, a public object can be sited in a different host such as Internet Explorer.
Whether or not the visual designer and run-time object are the same, they can be in the same file (.dll or .ocx) or in different files.