An excellent article from Jim Beveridge:
ATL and Upside-Down Inheritance explains the reasoning behind the slightly eccentric design choices made in the ATL windowing framework.