I have read some related questions on this site, including:
What language should I seek to learn if I would like to develop for Windows
and
How to start programming in Windows
but feel that my situation is slightly different and I have a few other questions that I would like some opinions on.
I'm a mature student doing an undergraduate degree in Computer Science. I have to choose an idea for my final year project pretty soon. I have my mind set on producing a specific Windows software product (desktop application - web enabled) when I leave uni, and see my final year project as an opportunity to get a head start on this. In particular I want to tackle all the hard parts such as networking and security.
I'm not really concerned at the moment with cross-platform compatability, because the market for this product all use Windows, but I need to choose the language and framework that I should use pretty soon.
I'm certified in Java (OCPJP (used to be SCJP)) and at uni we've been using Java, C and Occam (uurrghh). However, I was thinking of learning C++ so that I could use the Qt framework which looks pretty good.
I do have some concerns though. Would it be quicker to use C#, rather than C++ and Qt? What would the advantages be of using Qt? I'm hoping it will make development quick and will make my software secure and difficult to crack. I am aware that I have to pay for the privilege (I do not want to use the option which is free, as I would have to make my source code available).
If I use C#, then I will learn the .NET framework which is basically a lot of helper classes to speed Windows development, is that correct? I understand that I can use quite a few different languages with .NET and they'll all get compiled into the same intermediate language.
What's the difference between the Microsoft Foundation Class Library and the Windows Presentation Foundation? Does anyone know the advantages of using either one?
I don't think the software will be uber complex. I have professionally used 4 different products of the type that I want to make (I'm a mature student) and the actual processing part does not have to be cutting edge because the demand is never that great for even pretty low powered modern computers (obviously I will still try to be efficient), but the overall design and usability was suprising lacking in most of them and I'm hoping to do better. I just want to make sure that it looks good and that I can develop it quickly.
Should I continue reading Ivor Horton's Visual C++ which covers C++, basics of Windows programming, Windows Forms and the Microsoft Foundation Classes? Or does someone have a better suggestion. Limited time available so I need to decide on the tools I'm going to use for the finished product now.
I'm very sorry that this post is so long, but it's very important to me to get some good advice on this.
Many thanks :)
Edit:
Good article on StackOverflowGood article on StackOverflow
Another Edit:
Is memory management something which is automatic when developing with C++/Qt? I understand that if you're using .NET with C++, then it's all garbage collected.