I think your best bet is to use the Win32 API. I used to use MFC, but the more I learned about it, the more I learned that I had to bypass it and use the Win32 C functions instead.
With MFC, it is easy to make a simple application, but when you begin to make more complicated applications, the process of digging through MFCs abstractions can be difficult, frustrating and time-consuming. You end up having to learn the Win32 API functions anyway, but in a roundabout way.
I work as a software engineer for a company that makes Windows software applications. All of our code is in C++ and we use the Win32 API for GUI stuff.
I would recommend the book
Programming Windows by Charles Petzold. It goes through much of the nitty-gritty stuff that you really need to understand in order to write a Windows application in C++. It won't tell you everything you'll need to know, but it is a great way to learn the fundamentals.
------
Edit:
Whoops! I didn't realize that you wanted to make it cross-platform. I think the easiest way to make a cross-platform program with a user interface is probably to write it in Java. However, Java isn't perfect and you may still have some issues on different platforms. (I've heard that the Mac implementation of Java is a stinker and causes a lot of problems for my friend who writes in Java for a living.)
If possible, I would make the application a web app so that nobody would have to install anything and it would work on pretty much any OS which has a web browser. Of course, you'd need a web server for that and you'd have to deal with security issues and the problem of storing the user's data on the server instead of on their own machine.
I guess what you should do depends on what you want to get out of it. In other words, are you mostly interested in the learning experience, is this something you want to sell or is your goal to provide it freely to as many people as possible?