Attila stands for “ATL for Applications.” Attila is a set of extensions built
on top of ATL to provide application-level services in the same flavor as MFC.
Towards that end, Attila uses a lot of the same notions as ATL, e.g. heavy use
of templates, static binding and reliance on the compiler and the linker doing
their job. Also, in the flavor of ATL, Attila is under-documented and
requires a lot of user investment to make use of it. However, once you do, we
think you’ll find the flexibility and efficiency worth it. If you don’t, you
haven’t lost much, ’cuz Attila is free. Enjoy.
The Simple Object IIATL ObjectWizard Extension (whew — I’ve got to come up
with a shorter name…) provides the following features:
Support for [oleautomation] interfaces.
Support for the Neutral-threaded apartment.
Support for IDispatch-based interfaces other than duals.
Better support for disabling features that do not make sense together, e.g. FTM
+ ThreadingModel=Apartment.
Updated pop-up help.
Originally, SimpleObject2 was built to do away with the one benefit of
IDispatchImpl over IDelegatingDispImpl — wizard support. As do most
things developed under the greedy eye of my colleagues, it grew
to support a few more features than that. It’s available for download. Enjoy.
I got tired of not having a smart type for SAFEARRAYs, so I built one. It’s
limited to one dimension (does anyone use multi-dimentional SAFEARRAYs?) and
provides one class for the SAFEARRAY and another for the data itself (the lock
is a resource, too), but the usage is pretty nifty. See comvector.h
for the what and the how.
Also, Ron Jacobs sent me an ATL port of COleSafeArray called CComSafeArray that
I’ve made available here.
CComDATE: Wraps the COMDATE type, providing conversions from VARIANT,
DATE, ANSI string, UNICODE string, time_t, SYSTEMTIME, FILETIME, DOS time
and DBTIMESTAMP data types.
CComSpan: Represents the result of subtracting one CComDATE from
another. Useful for time/date math.
At atlmdi.zip, please find Charles Petzold’s famous
raw Win32 MDI application, MDIDemo, ported to ATL. See atlmdi.h for a set of
base classes for building MDI applications in ATL and mdidemo.cpp for an
example of their use.
Are you getting this: “Error: object doesn’t support this property or method”
when you try to call a method on your ATLHTML Control exposed external
dispatch (accessed via window.external in the HTML of the control)? Did it used
to work with IE4 and now it doesn’t with IE5? That’s because the ATL boys
played fast and loose with the identity laws of COM and, while it took the COM
police a while to catch up with them, catch up with them they did.
Download WrapperDispatch.h for an explanation
of the problem and my solution to it.