Understanding the Component Object Model is an electronic book that is roughly equivalent in size to a 110-page printed book. I am distributing it as a compiled HTML (CHM) help file, complete with a table of contents (see below), index and full-text search capability.
Understanding the Component Object Model sells for $12.95. To purchase by credit card through PayPal, click the PayPal image below. I will email the book to you (the file is about 600KB) as soon as I am able, which is generally within 24 hours of purchase.
COM is the underpinning for several technologies that have become the main focus of a very large contingent of the PC world. These technologies are ActiveX Automation, ActiveX controls and ActiveX documents. I will assume that the reader of this book has some familiarity with Visual Basic or Visual C++ programming, although the book can be profitably read by anyone who is not afraid of reading a few lines of code in either language and is really interested in understanding what COM is about.
While the Visual Basic programmer cannot access all of the features of COM (for this you must program in a language such as Visual C++), he or she can do quite a lot, thanks to the release of Visual Basic Version 5.0 (and later versions). While previous versions of Visual Basic allowed the VB programmer to create compound documents and ActiveX (OLE) Automation servers and clients, Version 5 allows the creation of the most sophisticated (to date) COM software components - ActiveX controls.
The book is organized into four chapters. The first chapter presents an overview of COM from a relatively high level. The second chapter provides a much more detailed look at COM, with a more-or-less complete example of how a traditional COM server and client might be constructed, using a pseudo C++ like code, which should be readable by those who do not program in Visual C++. Chapter 3 takes a careful look at an ActiveX (COM) technology called Automation and Chapter 4 takes a look at ActiveX controls.
Let me reemphasize the fact that the goal of the book it to provide the reader with a solid understanding of the principles of COM, not the details. This is the information that will stand the Visual Basic and Visual C++ programmer is good stead. However, if you just want to be told how to program in COM, then this book is probably not for you.
Understanding the Component Object Model About the Author Preface Introduction What is COM? Communication Between Software Components Linear Programming with GOSUBs Programming with Procedures Programming with Code Modules Programming with Class Modules The Big Leap - COM Chapter 1 - An Overview of COM Providing Services By Exposing Functions COM Objects and COM Classes Interface Confusion Definition 1 Definition 2 Definition 3 - COM Interfaces Picturing a COM Object The Binary Standard The COM Interface Contract and Versioning The Client Side of COM Type Libraries The Role of the System Registry What are OLE and ActiveX? What is Automation? What is an ActiveX Control? COM Concept, Design and Implementation Chapter 2 - A More Detailed Look at COM Some C++ Syntax COM vTable Interfaces Why Visual Basic is not Suited to COM Programming COM Interfaces and Their Implementations Using Inheritance and Virtual Functions to Generate vTables Using Multiple Inheritance to Generate Multiple vTables Creating a COM Object The Ubiquitous IUnknown Interface Class Inheritance Diagrams Enhancing a COM Interface COM Class Factories The IClassFactory Interface Summary of COM Object Creation CoCreateInstance Again A More-or-Less Complete Example Step 1 - Declare the Interfaces and GUIDs Step 2 - Generate the GUIDs Step 3 - Define the Exported Functions Step 4 - The COM Server Step 5 - The COM Client Chapter 3 - Automation What is Automation? Binding The IDispatch Interface Using IDispatch Binding and the vTable Interface Type Libraries Dual Interfaces In-Process and Out-of-Process Automation Servers Marshalling - The Proxy-Stub Connection Chapter 4 - ActiveX Controls Motivation What is an ActiveX Control? Client Sites Control and Container Interfaces Properties Type Library Property Entries The Value Property Types of Properties Ambient Properties Extended Properties Control Properties Persistent Storage of Property Values Storages and Streams Transactions Compound Document Interfaces Interface IStorage Interface IStream The IPersist Interfaces Interface IPersist Interface IPersistStream Interface IPersistStreamInit Interface IPersistStorage Interface IPersistFile Property Bags and Their Interfaces Property Pages Interface IPropertyPageSite Interface IPropertyPage Events Event Types How Events Work The Control Declares the Event Interface and Provides Type Information The Control Provides Information About its Event Set The Container Builds a Dispinterface for the Event Interface The Container Passes a Sink Pointer to the Control, Thus Establishing the Connection More on Connection Point Interfaces