Most languages can create GUIs these days, including PHP
Pros:
- C++ is extremely powerful, flexible, and fast (compared to Java). Odds are you're running more than a couple of programs coded in C++ right now.
- Java is entirely OOP, almost as powerful as C++, and much less complicated. It is also cross-platform. The swing API makes UIs much easier to code by hand than the regular Win32 API in C++. I can't remember too much about MFC, but from limited memory I don't think it matches up to Swing unless you're using the VC++ IDE in which case you don't have to code them by hand anyway

.
Cons:
- C++ is complicated and is a lower-level language than Java. It's entirely possible for someone that's new to programming to learn C++, but expect it to take longer. Also expect C++ code to be larger than Java code.
- Java is slower than C++ by a factor that increases as you go down JRE/JVM versions. Definitely no good if you want to code CPU-intensive applications like computer games. Also, the multiple JRE versions cause some to call Java "version proprietary" because unlike C++ Java is still in development and you can't count on users to have the latest JRE/JVM installed unless you bundle it with your software a la LimeWire.
If you want a "lighter" language that can do GUIs fairly easily but still has a good deal of power and is cross-platform, look into Python; esp. if you're like me and wouldn't touch Visual Basic with a 10ft. pole.