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.
Disclaimer
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.
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
http://www.sellsbrothers.com.
Installation
The current Attila bits are located at
attila.zip. 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.
Support
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.
Documentation
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.
Samples
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.
CComSingleInstanceModule
-
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.
SdiDocView
MdiDocView
-
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.
LookOut
History
-
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.