"This book is the definitive reference for ATL programmers. The chapter on CComObject is worth the price alone."--Don Box, COM guy, DevelopMentor"Brent and Chris are always technically accurate and present the information in a well written, easy to understand manner...I bought it and I'm the ATL Development Lead!"--Christian Beaumont, ATL Development Lead, Microsoft Corporation The Active Template Library (ATL) is a set of small, efficient, and flexible classes that facilitate the creation of interoperable COM components. Written for experienced COM and Visual C++ programmers, this book provides in-depth coverage of ATL's inner workings. It offers insight into the rationale behind ATL design, explains its architectural underpinnings, shows how ATL maps to COM, and describes important implementation details. With coverage current through ATL version 3.0, ATL Internals includes an overview of the Wizards but then goes well beyond the basics. The authors provide the detailed information needed to utilize ATL to its greatest advantage and work around its shortcomings.You will find detailed coverage of such topics as: *ATL Smart Types, such as CComPtr, CComVariant, and CComBSTR *Objects in ATL, covering COM object responsibilities and ATL threading model support *Servers in ATL, including ATL's class object implementations, managing server lifetime, self-registration, and server build optimizations *Interface maps, focusing on the techniques C++ programmers can use to implement COM interfaces and how ATL supports these techniques *Persistence and connection points *Enumeration, covering both pre-calculated and dynamic data sets, and enumerating over an STL container *ATL windowing classes *Controls and Control Containment If you want to optimize ATL by learning effective techniques that reduce the time you spend writing boilerplate COM code, there is no better resource than this book. 0201695898B04062001
Brent E. Rector is President of Wise Owl Consulting, Inc., a firm that specializes in Windows/COM development and consulting. He also teaches classes on COM, ATL, and MTS for DevelopMentor, a leading COM education firm. He received the Microsoft Annual MVP (Most Valuable Professional) award for his contributions to CompuServe's Windows forums.
Chris Sells is a content strategist on the Microsoft MSDN content team. Previously, he was the director of software engineering at DevelopMentor. Chris is the author of Windows Telephony Programming (Addison-Wesley, 1998) and Windows Forms Programming in Visual Basic .NET (Addison-Wesley, 2004), and coauthor of Effective COM (Addison-Wesley, 1999), ATL Internals (Addison-Wesley, 1999), and Essential .NET, Volume 1 (Addison-Wesley, 2003).
Foreword. Preface. 1. Hello, ATL.
What Is ATL?
Creating a COM Server.
Inserting a COM Class.
Adding Properties and Methods.
Implementing Additional Interfaces.
Support for Scripting.
Adding and Firing Events.
Using a Window.
Implementing Component Categories.
Adding a User Interface.
Hosting a Control.
Summary.2. ATL Smart Types: Strings, BSTRs, VARIANTs, and Interface Pointers.
String Data Types, Conversion Macros, and Helper Functions.
The CComBSTR Smart BSTR Class.
The CComBSTR Class.
The ComVariant Smart VARIANT Class.
The CComPtr, CComQIPtr, and CComDispatchDriver Smart Pointer Classes.
Summary.3. Objects in ATL.
Recall: COM Apartments.
The Layers of ATL.
Threading Model Support.
The Core of IUnknown.
CComObject et al.
Summary.4. COM Servers.
A Review of COM Servers.
The Object Map and the CComModule Class.
The Object Map.
Methods Required of an Object Map Class.
The CComModule Class.
Server Optimization Compilation Options.
Summary.5. Interface Maps.
Recall: COM Identity.
Aggregation: The Controlling Outer.
Interface Map Tricks.
Summary.6. Persistence in ATL.
A Review of COM Persistence.
ATL Persistence Implementation Classes.
The Property Map.
The Persistence Implementations.
Additional Persistence Implementations.
Adding Marshal-by-Value Semantics Using Persistence.
Summary.7. Collections and Enumerators.
COM Collection and Enumeration Interfaces.
Enumerating STL Collections.
STL Collections of ATL Data Types.
Summary.8. Connection Points.
A Review of Connection Points.
Creating an ATL-Based Connectable Object.
Creating an Object That Is an Event Recipient.
How It All Works: The Messy Implementation Details.
The Structure of a Windows Application.
Windows Control Wrappers.
Summary.10. ActiveX Controls.
A Review of ActiveX Controls.
The BullsEye Control Requirements.
Creating the Initial Control Using the ATL Wizard.
The Initial BullsEye Source Files.
Developing the BullsEye Control Step by Step.
Summary.11. Control Containment.
How Controls Are Contained.
Basic Control Containment.
Hosting a Control in a Dialog.
ATL's Control Containment Limitations.
Summary.Appendix A: C++ Templates by Example.
The Need for Templates.
A Different Kind of Polymorphism.
Member Function Templates.
Summary.Appendix B: ATL Classes and Headers. Index. 0201695898T04062001