Welcome to Attila! 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.

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

  • No MRU.

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

  • Left pane needs work.

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.
Still_Life_with_Aggregate October 25, 1999 Fun

Still_Life_with_Aggregate

Still Life with Aggregate

Built using online Lite-Brite.

Jason Whittington
Private DevelopMentor Mailing List

October 6, 1999

Spirit of the IUnknown

(sung to the tune of “Spirit of the Radio” (Rush, “Permanent waves”))
Words (c) Jason Whittington, 1999

Begin the day with a simple call,
A function unobtrusive
Loads the module that’s so elusive
And a matching context means no marshal goo

Off on your way from the factory
Interfaces at your fingers
QueryInterface gets to you a new one
Just Release the pointer when your object’s through

Transactional objects crackle with life
While they Service SOAP calls from some ASP
Giving their feedback on the final outcome
Making a call to Abort or Set Complete

All this machinery so that you can use it
Is still quite closely guarded
CreateInstance will get you a new object from the factory
(yeah the factory)

One likes to believe that it’s easy to use it,
But the threading models and getting pointers marshaled
shatters the illusion of transparency

the CLSID to marshal was requested by the S-C-M…
F-T-M!
Cookies, From the GIT
For Safety! Ohhhh….For Safe-ty!

Jason Whittington
Private DevelopMentor Mailing List

July 30, 1999 Fun

Computer synthesized song to liven up your day…

I just like the idea of a computer singing… If you’ve seen 2001, you’ll recognize the tune.

Windows Telephony Programming: A Developer’s Guide to TAPI June 27, 1999 Books

Windows Telephony Programming: A Developer’s Guide to TAPI

The Book

This page is dedicated to my book, Windows Telephony Programming: A Developer’s Guide to TAPI, from Addison-Wesley. If you’d like to order a copy, you can do so from Amazon.com .

The Table of Contents

  • Prologue: The Story of Windows Telephony
  • Windows Telephony Architecture (excerpted here)
  • Assisted Telephony
  • Making a Call
  • Telephony Framework
  • Answering a Call
  • Call Management
  • Telephony Service Providers
  • The Future of Telephony

The Source

This source code has been run and tested on Windows 98, Windows ME, Windows NT 4.0, Windows 2000 and Windows XP and supports TAPI versions 1.4 through 3.1. I have not touched this source code in years and can no longer support it unfortunately.

VS.NET Sample Source | VC6 Sample Source (previous version)

Here’s vc6mfc42.dll (zipped) if you need it.

TAPI Explorer

I built the TAPI Explorer (tExplorer) to allow me to understand the various capabilities of the telephony devices installed on my system when I was developing TAPI applications and writing my TAPI book. It grew into a utility for showing all line, address and phone capabilities as well as other TAPI settings, e.g. country codes, telephony locations, service providers, etc. If you’re running into TAPI errors that you don’t understand, TAPI Explorer will help you work through them.

This source code has been run and tested on Windows 98, Windows ME, Windows NT 4.0, Windows 2000 and Windows XP and supports TAPI versions 1.4 through 3.1. I have not touched this source code in years and can no longer support it unfortunately.

VS.NET tExplorer Source | VC6 tExplorer Source (previous version)

Real Programmers… April 19, 1999 Fun

Real Programmers…

Contributed by Liliya Yakupova:

Real programmers code in binary.
Tommy Riddle had this to say: “Actually, real programmers don’t need the enter key- they just type in 00001101.”
 
4/19/1999
Signs that you have hired the wrong COM developer… April 16, 1999 Fun

Signs that you have hired the wrong COM developer…

  • Keeps referring to interfaces as “Thingies”.
  • Insists that migrating to NT5.0 is a bad idea because the going rate for a rental-threaded apartment is $640.00 a month plus utilities.
  • Comes into work one morning dressed as a cowboy and claiming to be “The new marshaller in town”.
  • Wants to know how to tune his TV to the “RPC Channel”.
  • Stands up in design meetings, grabs his crotch, and proclaims “Yo! Marshall this! Am I right?”.
  • Names one of his interfaces “IKnown” and claims that any object that doesn’t implement it is doomed to eventually fall victim to a “COM Identity Crisis”.
  • Spends 2 hours in front of a whiteboard trying to prove that by taking the integral of the GUID generating function, one can discern the total surface area of the application’s UI in pixels.
  • Pronounces GUID as “gooeey dee”.

P.S.

Here’s a picture of the t-shirt that Microsoft produced for their 1999 Dallas TechEd that leverages Tony’s idea without giving him credit, asking him permission or even notifying him. You lawyers should be able to support you in your retirement with this one, Tony!

BTW, here’s one more sign that you’ve hired the wrong COM programmer (do you think CAT scans will become a normal part of the interview process?):

Anthony Toivonen
Fri 4/16/99 1:07 PM
DCOM Mailing List

April 15, 1999 Fun

The Official Guide to COM Culture

If the things on this page haven’t been enough for you, check out Mr. Bunny’s Guide to ActiveX.


← Newer Entries Older Entries →