ATL Internals: Working with ATL 8, Second Edition
Table of Contents
Copyright
The Addison-Wesley Object Technology Series
Foreword to the Second Edition
Foreword to the First Edition
Preface
Acknowledgments
About the Authors
Chapter 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 Persistence
Adding and Firing Events
Using a Window
COM Controls
Hosting a Control
ATL Server Web Projects
Summary
Chapter 2. Strings and Text
String Data Types, Conversion Classes, and Helper Functions
The CComBSTR Smart BSTR Class
The CComBSTR Class
The CString Class
Summary
Chapter 3. ATL Smart Types
VARIANTs, SAFEARRAYs, and Interface Pointers
The CComVariant Smart VARIANT Class
The CComSafeArray Smart SAFEARRAY Class
The CComPtr and CComQIPtr Smart Pointer Classes
The CAutoPtr and CAutoVectorPtr Smart Pointer Classes
ATL Memory Managers
Summary
Chapter 4. Objects in ATL
Implementing IUnknown
The Layers of ATL
Threading Model Support
The Core of IUnknown
Your Class
CComObject Et Al
ATL Creators
Debugging
Summary
Chapter 5. COM Servers
A Review of COM Servers
The Object Map and the CAtlModule Class
The Object Map
Methods Required of an Object Map Class
The CAtlModule Class
CComCoClass Revisited
ATL and the C Runtime Library
Summary
Chapter 6. Interface Maps
Recall: COM Identity
Table-Driven QueryInterface
Multiple Inheritance
Tear-Off Interfaces
Aggregation: The Controlling Outer
Interface Map Chaining
Just Say "No"
Debugging
Extensibility
Summary
Chapter 7. 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
Chapter 8. Collections and Enumerators
COM Collection and Enumeration Interfaces
Enumerating Arrays
Enumerating Standard C++ Collections
Collections
Standard C++ Collections of ATL Data Types
ATL Collections
Object Models
Summary
Chapter 9. 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
Summary
Chapter 10. Windowing
The Structure of a Windows Application
CWindow
CWindowImpl
CDialogImpl
Window Control Wrappers
CContainedWindow
Summary
Chapter 11. 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
Chapter 12. Control Containment
How Controls Are Contained
Basic Control Containment
Hosting a Control in a Dialog
Composite Controls
HTML Controls
ATL's Control Containment Limitations
Summary
Chapter 13. Hello, ATL Server: A Modern C++ Web Platform
The Microsoft Web Platform (Internet Information Services)
The Simplest ISAPI Extension That Could Possibly Work
Wrapping ISAPI
ATL Server
Web Services in ATL Server
Summary
Chapter 14. ATL Server Internals
Implementing ISAPI in ATL Server
Server Response Files
An Example Request Handler
Handling Input
Session Management
Data Caching
Summary
Appendix A. C++ Templates by Example
The Need for Templates
Template Basics
A Different Kind of Polymorphism
Function Templates
Member Function Templates
Summary
Appendix B. ATL Header Files
Appendix C. Moving to ATL 8
Strings, Character Sets, and Conversions
Shared Classes with MFC
Implementing COM Servers
ActiveX Controls and Control Hosting
ATL_MIN_CRT Changes
Summary
Appendix D. Attributed ATL
Fundamentals of ATL Attributes
The Future of Attributed ATL
Summary
Index
A
B
C
D
E
F
G
H
I
K
L
M
N
O
P
Q
R
S
T
U
V
W
Z