I am not a developer hence not up to date with the latest developments into the tech world. I am thinking of creating a desktop application for my own use and trying learn the best available technology doing the same if I could. I am planning to develop it for windows and I have hands on experience on C++ and visual studio. Will look forward to an expert advice.
C# with .net is the most favoured way to develop a desktop applications on Windows, and will get you a solution quicker than by learning and coding with something more low-level like C++ and the Win32 API. Plus as pointed out by Josh, a cut-down-but-functional-enough version is available for free, if cost is a consideration.
We use C#, currently with dot net 2.0, but we may move to 3.0 or 3.5 in the next year or so.
In the .Net world you will need to choose between WPF and WinForms.
WPF is nifty.
As EB points out this all really depends. I'd recommend you start with a managed language like C# or Java, my personal preference would to be learn C# and you can use a free IDE from Microsoft called Visual Studio Express Editions. http://www.microsoft.com/Express/
I also assume your developing on Windows?
WPF is really easy to work with: nice markup, easy to edit. And it can easily downscale to Silverlight (since Silverlight = WPF/E = WPF Everywhere) and become a web application with just a bit of tweaking.
Here's a contrarian suggestion: MFC. Yes, C# and WPF are the latest thing, well supported, etc. However, an MFC app is lightning fast, has no framework dependencies, simple to install, etc. Recently Microsoft did a major upgrade to MFC, providing support for Office 2007-like UIs etc.
Unless you define what exactly your priorities are, there is no real answer to this question (as it happens with most "What is the best ...?" questions):
- What environment/OS do you care for? Windows? Linux? Mac OS X?
- How important is ease of development?
- How important is the memory footprint?
- How important is "freedom" (whatever your definition of that is)?
- How much money do you have available for the task?
- How much time do you have?
- How important is stability of your application?
- How important is the proofability of your application?
- What development language, if any, do you know?
Those are just a few things you need to clarify before a good answer can be given.
I have to throw my support behind Java Swing apps here. As a desktop Java developer for many years, I've developed many solid applications that do indeed run on multiple platforms.
You can definitely get very in-the-weeds with Swing (CellRenderers, etc), but basic Swing by itself will probably satisfy 80% of the use cases.
Go with COM and ATL. Can be used by any clients starting from VB, C++, Java script. Or you can use Qt, if you want it to be platform independent.
There is not really a right or wrong answer here. You have a lot of options available to you when it comes to choosing a programming language. I've been a Java developer for 10 years now so I can say that, yes Java will do the trick if you want to. Java is an established technology and there are loads of resources available, but you could easily make the same case for a number of other languages.
If platform independence is important you have less choices.
I suggest you download NetBeans to try and play around with making a GUI, but that you also download Visual Studio Express and try that GUI builder for C# as well.
Have fun
As much as it pains me to say, go with the Microsoft technologies. You will get fast results with .Net, regardless of the language you choose. C# has excellent tools support and in .Net 3.5 it is turning into a half decent language and he .Net platform has many, many (too many!) frameworks and class libraries that you can utilise.
Bang for buck and shallow learning curve on the Windows plaform - that's what .Net is all about. The Express editions of Visual Studio are free, so building an app for personal use will not cost you a dime.
You're going to get a different answer from different folks depending on what they use every day.
Use what you know. You know C++, so C++ and Qt is probably the quickest way to go. It gives you a drag-and-drop gui designer, quick development time, and cross-platform ability as a bonus.