tags:

views:

417

answers:

8

I am a long time MFC programmer and know it quite well. Recently we are planning for a large desktop application. In order to beat competition, one requirement is polished UI. We narrow down the choices to three:

  1. WinForms
  2. MFC
  3. QT4

We looked at some big WinForms applications, such as Paint.Net, and feel that it still lacks power of performance. The startup takes a while and some UI parts do not look very nice.

We had great hopes in QT4, but after writing several programs on it, we find that the looks of a QT4 application is not at par with native Windows UI. It still looks differently. Also we worry about about lack of widgets (for example, the color picker and calendar control in the library quite suck).

MFC is a safe bet, especially with components from Codejock.com. The UI interface looks quite polished with codeJock toolkit. And all widgets needed are there. The problem is that its coding style is quite outdated.

What will you choose for your next desktop application?

+11  A: 

WinForms is effectively at the end of its life now. You should look at WPF.

See WPF: Any cool UI ideas i can look at? for links to some nice examples.

GraemeF
WPF is definitely nice, but as a requirement of the OP seems to be that the UI should "blend into" the Windows-look, a few problems _will_ arise. One of the great things about WPF is the ability to costumize almost everything to look the way you want, but then again, this might be a weakness as the styling of WPF controls is essentially a remake of the Windows one - once in a while you'll still find small differences though.
cwap
I have to agree with Graeme, WinForms is definitely EOL, and WPF is the UI platform of the now and the future for Windows. It provides an extremely polished UI right out of the box, but can easily be skinned to look any way you want, so your free to provide any kind of polish you want. MFC, while "safe", is also a very old, legacy framework that could be deprecated and dropped by Microsoft at any time.
jrista
Neither WinForm nor MFC are EOL and in danger to be dropped any time soon. There is a lot of code out there that uses them, and WinForms is still used more than WPF...
rpg
A: 

We at my work are currently revamping a GUI app from VB6 to make it look "prettier". We've chosen the .NET winforms platform for our upgrade since most of our coders are familiar with it. .NET has a few libraries dedicated to graphics, and there is a wide range of nice-looking user controls already built into the library. Asside from those, there are many, MANY custom-made controls out there such as the ComponentONE library, and there are a lot of opensource controls for enterprise use that look nice as well (you can search CodeProject.com's articles section for some free, downloadable controls that look very vista/windows 7-esk).

The framework also natively doublebuffers windows, and has bufferedGraphics classes that you can use to manually handle doublebuffering if you so choose.

However, windows forms do still ghost when dealing with high res images as background pictures and the only way to really fix it seems to be to use the DirectX libraries to draw using the graphics hardware on the machine (which is difficult, but atleast its free).

Hopefully that helps your decision on the platform form the windows-forms side.

Jrud
+1  A: 

WinForms is really easy to get into if you know MFC (it's still based on the core Win32 concepts, so you don't need to learn much to get up to speed). Compared to MFC, you can develop much faster, and there is so much more library support for everything in .net that you have to write for yourself or find 3rd party libraries for in MFC. Often I find the .net solution to a big problem is around 3-10 lines of code, whereas the equivalent MFC solution would be hundreds or thousands of lines. I wouldn't even consider MFC a starter now that I've used WinForms in C#.

We're building some very large C# applications and the performance is perfectly fine. If any small part of the program is really performance-critical, it's really easy to plug in a bit of unmanaged C++. I found startup times abysmal in XP in the early days, but with more recent .nets and Vista, startup time is comparable to MFC apps.

So I'd go for WinForms/.net at a minimum. WPF is also a sensible future-facing approach to consider.

Jason Williams
+1  A: 

WPF is a good option if you've got design skills or can ask for someone to prettify your UI. I think it's definitely one of the most versatile options.

You could also use components like DevExpress or Telerik, both have an extensive library of WinForms controls and as of recently WPF controls. I've used DevExpress myself and am rather pleased with the looks. Although these library don't come cheap, but they do carry quite a lot of functionality.

I've never worked with QT4 so can't judge that.

Yannick Compernol
+1  A: 

For my next desktop app I would use:

on Windows:
Probably the old fashioned Windows API (without MFC) because I am familiar with it.
Maybe Qt, because I'd like to try it out.

on MacOSX: Cocoa

on Linux: Qt

StackedCrooked
+1  A: 

Not that I am very fond of MFC, but if you are comfortable with it, go ahead. It is not going away any time soon, although it surely won't be updated and improved as much as WPF.

Nemanja Trifunovic
+1  A: 

Having spent 12+ years developing MFC applications, and now using WPF for less than a year, there is no way I would go back to MFC. At previous employers, we would spend countless hours customizing UI behavior and getting the right graphical look that would take a fraction of the time in WPF. Not to mention the added flexibility of being able to work with the UI as XAML (XML,) as opposed to the rather outdated resource editor.

If your application has to be C++ (as opposed to C#,) then I assume that using WPF would be a little more non-trivial. I haven't done .NET inside of C++, but I remember the overviews presenting it as a fair amount of extra work.

StrayPointer
A: 

I would still consider MFC. It's far from dead and especially with the new 2008 feature pack. You get a host of updates and can now create those fancy ribbon UI elements. If you already know MFC then you know the pitfalls (old but some are still there) and can knock out the work quite quickly.

There a ton of UI components you can buy for MFC and it has the benefit of being fairly close to the metal as far as speed goes. There is no need for your end users to install a framework or anything else.

I write C# for my day job, but all my personal projects are MFC/C++ since they don't require my users to have additional frameworks,libraries,etc installed.

Justin