tags:

views:

840

answers:

9

I have been writing C++ Consuole/CMD-line applications for about a year now and would like to get into windows GUI apps. For those fo you who have taken a similar step, what advice/tips can you give me. Ex: good readings, tutorials, approach tactics, etc...

I know this is a really broad question, but i really don't know how/where to start, thus not knowing how to ask this question properly.

+3  A: 

Well, for the Windows GUI, get used to referencing the MSDN a lot, assuming you want to deal with the API directly.

My favorite resource for learning the basics was theForger's tutorial, but there are hundreds of books and other sites out there.

Andrei Krotkov
bleah, MSDN sucks. :(
Jason S
(that was not meant to be a put-down of you, just of Microsoft. ;)
Jason S
+2  A: 

I guess an important place to start is your toolkit. You tagged this visualc++, so I assume you are looking at that, however remember there are other toolkits like Qt.

I would suggest starting at Microsoft's tutorials.

rlbond
A: 

Are you familiar with Microsoft Visual Studio and .NET technologies? Since you want to develop for Windows platforms why don't you start by taking a look at Microsoft Visual C++ Express Edition.? Explore a little with the available tools from MS and search for some tutorials.

JPCosta
+4  A: 

For C++ you have two choices, Native or Managed.

For native development, my team (at Microsoft, in Windows) uses the Windows Template Library. It works very well for us.

You should learn the basics of Win32 and how Windowing works. The canonical tome is Programming Windows®

For Managed development you can use C++ with Windows Forms. However, windows forms has been supplanted by Windows Presentation Foundation (WPF).

Foredecker
+4  A: 

Most windowing libraries and technologies use similar idioms. Pick one and learn it.

The Windows Template Library is a very nice veneer for Microsoft Windows while sticking with C++.

For cross platform C++ windowing toolkits (they work on Microsoft Windows as well as other platforms) you can try QT or wxWidgets.

johnny
+18  A: 

I highly recommend the use of the Qt Libraries for several reasons:

  1. The Framework is freely available for Windows, Linux, MacOS X, and a couple of mobile systems. Since version 4.5 the license is LGPL, which basically means that you can use Qt even in commercial applications.
  2. The design of Qt is out-standing, e.g. they use modern design patterns and a very consistent interface design (I don't know many other libraries that use object-oriented ideas in such perfection). Using Qt is the same as using Boost: it will improve your own programming skills, because they use such beautiful concepts!
  3. They are bloody fast, for instance in rendering (due to the different back-end for OpenGL, DirectX, etc.). Just have a look on this video and you see what can easily be done with Qt but is hard to achieve with native Windows, Mac, or Linux programming.
  4. They have a really great documentation, with tons of tutorials and a very good reference. You can start learning Qt easily with the given docs! The documentation is also available online, so have a look and see by yourself.
  5. As mentioned before, Qt is cross-platform; you have one source-base that works on all the important operating systems. Why will you limit yourself to Windows, when you can also have Mac and Linux "for free"?
  6. Qt is so much more than "just" the user interface; they also offer network and database functionality, OpenGL bindings, a full-working web-browser control (based on WebKit), a multimedia playback library, and much much much more.

Honestly, I wasted a couple of years by developing software natively for Windows, while I could have been so much more productive.

beef2k
great I'm looking for this answer for my GUI programming in C++ :)
nXqd
+1  A: 

+1 for Qt. I would put documentation at the top of my list of requirements for a GUI system. Qt has great docs and there's a huge community behind it. Also there are several books about it. Good docs are extremely important if you are working alone with no other team members to rely on. Alternatives are wxWidgets, MFC, WTL, FLTK and many more. They all have pros and cons. Eg FLTK is small and only provides GUI whereas Qt and wxWidgets also include networking, database access etc. Qt seems to have the most momentum at the moment after the Nokia buyout eg the release of Qt Creator which enables you to develop apps outside of Visual Studio.

20th Century Boy
+3  A: 

My best advice for Windows C++ GUI programming is don't do Windows C++ GUI programming.

I realize that is an extremely uninformative/smartass response if it's not qualified, so I'll note that you don't state that you need to do C++ Windows GUI programming, but that you "Would like to get into Windows GUI apps." If that is the case, and you don't have a very specific reason to use C++ (i.e. gigantic existing legacy codebase written in MFC or a bunch of C++ code that you want to build a front-end for but would be a pain to expose to .NET code), then it is going to be a lot easier and more productive to go the .NET route and start learning Windows Forms or better yet WPF using C# or another .NET language of your choice.

If you do need to go C++, then I would second the recommendations for 3rd party toolkits like Qt or wxWidgets, as the state of C/C++ GUI programming tools from Microsoft is now abysmal.

Whatever
A: 

It has been so long since I worked with C++ on Windows GUI, my word is always avoid C++ in Windows GUI unless you have a very good reason, I mean a good darn reason, if you need some performance C# is more than enough for 90% of the cases, and if you need more power write your performance critical thing in a C++ dll, and call it from a Windows Forms or WPF application. It will save you hell of a lot time. Still my opinion, if you have another I totally respect that

bashmohandes