OOPortal OOPortal

Basic COM   «Prev  Next»
Lesson 2 Prerequisites
Objective Make sure you have the background and equipment required for this course.

Basic COM Programming Prerequisites

COM Fundamentals I is intended for professional C++ developers interested in building software components using Microsoft's Common Object Model also known as COM. Much of the information in this course builds on C++ concepts. To get the most from this course, you should have a solid understanding of the following C++ concepts:
  1. Classes and structures
  2. Constructors
  3. Inheritance and multiple inheritance
  4. Virtual functions
  5. Pure virtual functions
You do not have to be an expert in these areas, but you should have an idea of what they mean.
You should also have experience developing Windows applications in C++ using the Win32 API. Finally, the examples and exercises in this course are written in Visual C++ 6.0 (you can use 5.0), so you should have experience using this tool.

COM Versus ActiveX Versus OLE

Question: What is the difference between COM, OLE, and ActiveX?
That is one of the most common (and reasonable) questions developers ask as they get into this technology. It is a reasonable question because it seems that the purveyor of this technology, Microsoft, does little to clarify the matter. You have already learned that COM is the API and binary standard that forms the building blocks of the other technologies. In the old days (like 1995), OLE was the blanket term used to describe the entire suite of technologies built on the COM architecture. These days, OLE refers only to those technologies associated specifically with linking and embedding, such as containers, servers, in-place activation, drag-and-drop, and menu merging. In 1996, Microsoft embarked on an aggressive marketing campaign in an attempt to create brand recognition for the term ActiveX, which became the blanket term used to describe non-OLE technologies built on top of COM. ActiveX technologies include Automation (formerly called OLE Automation) controls, documents, containers, scripting, and several Internet technologies.
Because of the confusion created by using the term ActiveX to describe everything short of the family pet, Microsoft has backed off a bit and now sometimes refers to non-OLE COM technologies simply as COM-based technologies. Those with a more cynical view of the industry might say that the term OLE became associated with adjectives such as slow and bloated, and marketing-savvy Microsoft needed a new term for those APIs on which it planned to base its future operating system and Internet technologies. Also amusing is the fact that Microsoft now claims OLE no longer stands for object linking and embedding.