November 1, 1999 tools

Welcome to Attila!

Attila GDI sample
(Jim Murphy likes Attila and GDI a little too much…)

Welcome to Attila

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.


Attila isn’t a class library. Some of the headers depend on some of the others. Some are stand-alone. You are free to pull in the pieces of Attila that you need and leave the rest alone. Most of the headers were built by different folks and while every effort was made to keep things consistent by choosing ATL design techniques, everyone does things there own way.

This work is the work of the individuals involved and does not represent any contribution of their respective employers. You are under no obligation to use any of Attila at any time, but if you do, please abide by the License.


Attila is copyright (c) 1999-2000 by its contributors.
All rights reserved.
No warrantees extended.
Use at your own risk.

You may use Attila in your product in compiled form without royalty.
You may not distribute Attila in source code form without the express written consent of the contributors.

The official home of Attila is


The current Attila bits are located at Download and unzip them into the folder of your choice (making sure to preserve path names). Make sure to add the Attila include directory to your compilers include path. For example, if you unzipped Attila into the c:\attila directory, add c:\attila\include to your compiler’s include path. You can check to make sure you did this right by building any of the samples in the samples folder.


Please do not send Chris Sells or any of the other contributors personal email complaining about Attila. Also please do not post Attila bug reports to any other mailing list, e.g. DCOM or ATL. If you like, you can submit bugs to the Attila Hit Squad mailing list (but only if you’re a member). Nobody there is under any responsibility to fix anything in Attila, but you might shame someone into it. A much better way to contribute to the life of Attila is to submit the fix along with the bug report. Or even better, join the Attila Hit Squad mailing list and fix bugs submitted by others.

Official Attila Contributors

Who Did What

  • Chris did a lot of the initial framework.
  • Justin did CMsgTranslator.
  • Ed did CRegPreferences and CRegWindowSerializer.
  • Curt did the common dialogs and restructured and added AX support to property pages.
  • Matt and Shawn did work on the coolmenus and coolbars.
  • Simon did the multi-SDI stuff.
  • Joe did the command UI routing support.
  • Anthony did the command routing.
  • Rodrigo and Jim did the GDI wrappers.
  • Jorge did the Doc/View stuff.
  • Brad did the DDX/DDV support.
  • Shawn did CSimpleList.


You might find some implementation notes for Attila in the docs folder, but you probably won’t. If you have any documentation you’d like to submit, we’d love to have it.


Check the samples.htm file in the samples folder of the Attila distribution. You can build all of the samples from the command line using the buildall.cmd batch file in the samples folder.


  • Uses Single_Instance_App as the DDE application name, preventing more than one single instance ATL application from running at a time. DDE application name should be based on something unique to the application, e.g. the module name.


  • No MRU.


  • None of the MDI accelerators work, e.g. ctrl-tab.
  • There seems to be a lot of glue code in CMainWindow that could be hoisted to a base class.
  • No MRU.


  • Left pane needs work.


  • 8/14/00, Various property sheet enhancements.
  • 1/28/00, Simulated PSN_APPLY for Wizards and PSN_APPLY for modeless propsheets bug fix.
  • 12/8/99, CSimpleList and bug fixes.
  • 11/29/99, Bug fixes.
  • 11/25/99, Bug fixes.
  • 11/10/99, DDX/DDV and bug fixes.
  • 11/1/99, Bug fixes.
  • 11/1/99, Beta release.