COM Objects and IDL

Microsoft's Component Object Model, or COM, is a specification for developing modular software components. COM is not a programming language or an API, but an implementation of a component architecture. A component architecture is a method of designing software components so that they can be easily connected together, reused, or replaced without re-compiling the application that uses them. Other examples of this methodology include the Object Management Group's Common Object Request Broker Architecture (CORBA) and Sun's JavaBeans technologies.

ActiveX controls are a special class of COM object that follow a set of Microsoft interface specifications; they are normally designed to present a user interface.

IDL for Windows supports three methods for using COM-based software components in your applications:

What Are COM Objects?

A COM object, or component, is a piece of software that:

In addition to these criteria, a component may also supply a user interface that can be manipulated by the user. COM objects that supply a user interface and send events to the programs that use them are generally packaged as ActiveX controls, although it is not a requirement that an ActiveX control provide a user interface.

COM objects and ActiveX controls are nearly always packaged as Windows executable (.exe), dynamic link library (.dll), or object linking and embedding (.ocx) files.

Why Use COM Objects with IDL?

There are several reasons to use COM technologies alongside IDL: