Fog Creek Software
Discussion Board

Is Visual Studio used for Complex GUIs?

Are complex and rich GUI applications actually written from the top down in Visual Studio? Would you write something like MS Outlook (or VS itself) in Visual Studio, or would you only use it to design lower level dialog boxes, resorting to writing GUI code for how it all hangs together?

Any comments or experiences would be appreciated.

Paul Mansour
Thursday, June 5, 2003

Do you mean, are the GUI designers used for large projects?

In my experience, no.

Brad Wilson (
Thursday, June 5, 2003

"In my experience, no."

From _your_ experience, can you also answer Why Not?

Heston Holtmann
Friday, June 6, 2003

I used to work on a complex, shrink-wrapped APP.

We used VC++ 6.0's dialog editor for the dialog boxes,
and then wrote the main "APP" in VC++ 6.0 with the document/view architecture.  (Which is really just model/view/controller, but you get the point.)

So, now, you couldn't drag and drop - the view was defined by the view class.  We had more than one view class, so you could see your model in different ways.

does that answer your question?

Matt H.
Friday, June 6, 2003


I assume your question really is *Is MFC or Visual Studio AppWizard generated code used for complex GUIs*

As you probably know, Visual Studio itself is written using the MFC framework, but they probably didn't used the generated code as is.

As for Outlook, it's not written in MFC (as far as I can guess) and I wouldn't either. Outlook is really a reasonably small application that glues together a large numbers of COM components. Each one of these can be developed using ATL for instance, although I don't know how it was done.


Maxime Labelle
Friday, June 6, 2003

I worked on one program that was a urban radio-wave propigation simulator that was MFC head to toe.  It had an Open GL rendered 3-D model of a city, and a WYSIWYG graphing app.  I wrote plenty of custom controls and did double buffered GDI output for the graph editor, without any trouble.

I also worked on an authoring program that frequently changed what view you were looking at (all attached to the same document) depending on actions you took, and it had a rich edit box that let you embed hyperlink-like things and use them.

You get a fair amount for free with MFC, and MFC programmers are easier to find than straight Win32, in my experience.  And  if you want to do more than MFC comes with you usually can (more often than VB will let you IMO), but certainly it sometimes gets in your way.

There is also a pretty good supply of add-ins that you can download or buy for MFC, so if you want an outlook bar, someone has already written one, I'm pretty sure I could slap together an app that looks a lot like outlook pretty quickly.

I suspect that most of the products that come out of the big software companies don't use MFC, but a fair chunk of the small products coming out of small companies do.  MFC is very attractive to small companies that can't necessarily find the best gurus, and don't mind being locked into to Microsoft platforms.

Keith Wright
Friday, June 6, 2003

I find that most complex GUI apps are written in VC++ 6.0 right now. So no, they don't use the top-down approach but that is mainly because the tools for doing so are horrid.

With .NET, this change a little bit. I now cannot imagine NOT working from the top-down. It would drive me crazy to go back to that method.

Now that I think about it, I sort of use a middle-up-down method. I "draw" my Window and then go into the generated code to tweak things (I find it hard to get precise placement with a mouse sometimes).

I'd love to know Brad's reason for why not as well. I stated my reason, but I'm not sure that is why others used the bottom-up method.

Friday, June 6, 2003

If we're talking about C++, until VS.NET, there was no "main window" form design, unless you wanted a dialog-driven application. The designers have their limits. It's one thing to design a fairly simple dialog; it's quite another to design the main window of a complex application.

Brad Wilson (
Friday, June 6, 2003

Isn't it interesting how we all made assumptions about the language he was talking about?

He could be talking about VB for all we know. :)

Friday, June 6, 2003

I think quite a few apps are done using MFC, including some MS apps.  I read this in an MFC FAQ or MSDN paper some place.

Off the top of my head, I think (could be wrong on some details) MS MFC apps include WordPad (atleast some versions), WordArt, IE (I think although IE app)  is just a shell to huge amounts of com plumbling) and Visual Studio (at least version 6's) UI.

I have used MFC myself in a number of complex applications.

Using MFC is not necessarily the same as using the Wizards etc or just the standard classes.  In my own apps, for example, I have for instance replaced the CDocManager class or the menu class, etc.

S. Tanna
Friday, June 6, 2003

I think we made the assumption because he gave the example of Outlook and I don't think we're under illusions that that was written using VB6!

John Topley (
Friday, June 6, 2003

The funny thing is, I don't really care what outlook was written in. I've never purchased software based on the language that was used to build it.

I could really care less if Outlook was written Lisp. As long as it works.

Friday, June 6, 2003

marc wrote:
"The funny thing is, I don't really care what outlook was written in. I've never purchased software based on the language that was used to build it.

I could really care less if Outlook was written Lisp. As long as it works. "

That's what matters.  Way to make a point in an otherwise meandering thread!

Friday, June 6, 2003

My problem with GUI's (especially complex GUI's) is that it takes a long time to acquire the skill set.
It took me years to learn WIN32/MFC - and now it is sort of obsolete.
(i.e. demand has moved to other toolits - now its WEB FORMS/SWING/ATL(WTL) )

Now if you know one toolkit really well, then that helps you with other toolkits; however this Dejavue thing
really doesn't help me to dig SWING (Argh, they event don't have a spy utility, this shit is less hackable).

anybody with a similar experience?

Michael Moser
Friday, June 6, 2003

Yes, learned straight  SDK, moved to OWL, did MFC (was disgusted by it given previous knowledge of OWL). And some Swing.

But I am now doing webapps, which have dumb GUIs... what a shame...

The choice seems to be:

- nice app w/ all goodies: Win32 MFC mess
- quite nice app without all goodies: wxWindows
- OO-compliant app (but ugly and slow): Swing
- OO-compliant and a bit faster: SWT

- bad green-screen equivalent app: WebApp


- .NET : the thing that is not installed on PCs and that M$ seems to be not so proud about those days... (like renaming products back to what they were)

We are in 2003 and no big changes seem to be occuring on that front...

Friday, June 6, 2003

>>Would you write something like MS Outlook (or VS itself) in Visual Studio

I would most definitely write the GUI part in VB6 (right now, since all the Tools/Controls I own are for VB6) or C# (in the future).

As far as "resorting to writing GUI code", if you use .Net it basically writes GUI code for you so why not take advantage?

I'm fairly positive that I could almost completely re-create Outlook using Visual Studio (in whatever language).

Saturday, June 7, 2003

Thanks all for the comments.  The choice of language is not, I think, particularly relevent. I'm trying to determine if the VS model is really appropriate for more than designing a modal dialog box. 

I lean towards what  Brad Wilson said above:

"The designers have their limits. It's one thing to design a fairly simple dialog; it's quite another to design the main window of a complex application."

It seems to  me that when you have a complex main application form, with many subforms (the layout of which may be data driven), toolbars, multiple context sensitive menus, popups, floating and docking forms, in other words, GUI in all its glory, that  this can only be built efficiently (in terms or programmer productivity) from the ground up out of component parts, with a lot of code re-use, and all of the good practices as defined in, say, McDonnell's, Code Complete.

In other words, writing a complex GUI is really no different than writing a complex system of any sort, and that relying on VS for more than the simple layout of dialog boxes may be bad idea. 

Thanks again for your comments.

Paul Mansour
Saturday, June 7, 2003

*  Recent Topics

*  Fog Creek Home