views:

196

answers:

4

If choosing between:

  • ATL
  • Windows Forms
  • MFC
  • Win32

Specifically the application will be:

  • for completely in-house use.
  • Most users lack basic windows/pc knowledge. (consider simple UI)
  • used for automated testing which entails:
    -bringing in lots of data from external equipment (can choose VXI, USB, or Ethernet)
    -very heavy on graphics - likely directX
  • Lifespan of the application will be 10+ years (consider future windows platforms, etc.)
  • Users will be in very remote locations and offline while testing, but can be online each night to sync reports (separate application used for database syncing now) - consider program update challenges?
  • Program speed adds value - meaning the faster we can aquire and display data, the more testing can be done. There is no bottleneck other than the program, simply every bit faster = every bit more productive.

Again, c++ specifically - not C#.

Thanks, Jeff

+2  A: 

If you don't mind tying yourself to VC++, I would go for ATL+WTL. It is very lightweight and still adds some abstraction to raw Win32. MFC is OK as well, I guess, although I don't really like it, but it is better documented than WTL.

As for Windows Forms, i would stay away from it, especially if you know you are going to use C++.

Nemanja Trifunovic
+2  A: 

Stay clear of MFC. Granted, it's used a lot, but it's a great example of non-idiomatic C++ use. Notably, it implements its own RTTI system and reimplements parts of STL.

ATL is not very feature-rich, but there is a good extension called WTL. It's not exactly great C++ either, but much better than MFC. If you're not interested in GTK, Qt and the like (presumably because you'd like the framework to be thin so as to permit easy integration with DirectX etc.), WTL is probably the best option for you.

avakar
+2  A: 

I don't think C++ Windows Forms is a valid combination. At least it's not in my installation of VS 2008.

So that leaves us with ATL, MFC and Win32. All are old, but Win32 is the oldest, so I would eliminate that.

There is a lot of external support for MFC (CodeProject.com, etc.), its fairly well documented and there's lots of people out there with MFC experience. Look at the number of topics on this website for ATL vs. MFC. MFC has an order of magnitude more posts.

MFC seems to be much more common than ATL. IMO, MFC would be the way to go (given the limited choices).

NascarEd
A: 

I have extensive experience with both WTL and MFC and wouldn't choose WTL over MFC anymore. MFC isn't so bad, once you learn which parts to ignore (doc/view, CArchive, containers, ...) MFC gives you a much wider selection of UI controls that will never be matched by WTL, and there is much more help available for MFC. With WTL, you're pretty much on your own (apart from the WTL mailing list and sample code on viksoe.dk).

That being said, if you'll be doing the heavy lifting in DirectX anyway, the UI toolkit won't matter that much. Both MFC and WTL will do for a few forms and dialogs; win32 is too much work without added value over MFC or WTL, and Windows Forms from C++ is a pita, and slow. Plus Windows Forms is oldschool already, at least MFC won't change much anymore :)

Roel