Foreword</font><br>Preface</font><br></font><br>Chapter 1 Hello,ATL</font><br></font><br>What is Atl?</font><br>Creating a COM Server</font><br>Inaerting a COM Class</font><br>Adding Properties and Methods</font><br>Implementing Additional Interfaces</font><br>Support for Scripting</font><br>Adding Persistence</font><br>Adding and Firing Events</font><br>Using a window</font><br>Implementing Component Categories</font><br>Adding a User Interface</font><br>Hosting a Control </font><br>Summary</font><br></font><br>Chapter 2 ATL Smart Types: Strings,BSTRs,VARIANTs,and Ineterface Pointers </font><br></font><br>Sting Data Types,Conversion Macros,and Helper Function </font><br>The CComBSTR Smart BSTR Class</font><br>The CComBSTR Class</font><br>The CComVariant Smart VARIANT Class</font><br>The CComPtr,CComQIPtr,and CComDispactchDriver Smart Pointer Classes</font><br>Summary</font><br></font><br>Chapter 3 Objects in ATL</font><br></font><br>Recall:COM Apartments</font><br>Implementing IUknown</font><br>The Layers of ATM</font><br>Threading Model Support</font><br>The Core of IUknown</font><br>Yours Class</font><br>CComObjects et al.</font><br>ATL Creators</font><br>Debugging</font><br>Summary</font><br></font><br>Chapter 4 COM Servers</font><br></font><br>A Review of COM Servers</font><br>The object Map and CComModule Class</font><br>The object Map</font><br>Methods Required of an Object Map Class</font><br>The CComModule Class</font><br>CComCoClass Revisited</font><br>Server Optimization Compilation Options</font><br>Summary</font><br></font><br>Chaqpter 5 Interface Maps</font><br></font><br>Recall:COM Identity</font><br>Table-Driven Queryinterface </font><br>Multiple Inheritance</font><br>Tear-off interfaces</font><br>Aggregation:The Controlling Outer</font><br>Inface Map Tricks</font><br>Summary</font><br></font><br>Chapter 6 Persistence in ATL </font><br></font><br>A Review of Persistence </font><br>ATL Persistence Implementation Classes</font><br>The Property Map</font><br>The Persistence Implementations</font><br>Additionalo Persistence implementations</font><br>Adding Marshal-by-Value Semantics Using Persistence</font><br>Summary</font><br></font><br>Chapter 7 Collections and Enumerators</font><br></font><br>COM Collecion and Enumeration Interfaces</font><br>Enumerating Arrays</font><br>Enumerating STL Collections</font><br>Collections</font><br>STL Collections of ATL Dats Types</font><br>Simple Collecions</font><br>Object Models</font><br>Summary</font><br></font><br>Chapter 8 Connection Points</font><br></font><br>A Review of Connection Points</font><br>Creating an ATL-Based Connectable Object</font><br>Creating an object That is an event Recipient</font><br>How it all Works:The Messy Implemengtation Details</font><br>Summary</font><br></font><br>Chapter 9 Windowing </font><br></font><br>The Structure of a Windows Application</font><br>CWindow</font><br>CWindowlmpl</font><br>CDialoglmpl</font><br>Windows Control Wrappers</font><br>CContainedWindow</font><br>Summary</font><br></font><br>Chapter 10 Activex Controls</font><br></font><br>A Review of Activeex Controls</font><br>The BullsEye Control Requirements</font><br>Creating the Initial Control Using the ATL Wizard</font><br>The Inital BullsEye Control Step by Step</font><br>Developing the BullsEye Control Step by Step</font><br>Summary </font><br></font><br>Chapter 11 Control Containment</font><br></font><br>How Controls Are Contained</font><br>Basic Control Containment</font><br>Hosting a Contol in a Dialog</font><br>Composite Controls</font><br>HTML Controls</font><br>ATL's Control Containment Limitations</font><br>Summary</font><br></font><br>Appendix A C++Templates by Example</font><br></font><br>The Need for Templates</font><br>Template Basics</font><br>A Different Kind of Polymorphism</font><br>Member Function Templates</font><br>Summary</font><br></font><br>Appendix B ATL Classes and Headers</font><br></font><br>Index