Most of what I was doing today with the GUI code was really figuring out how it was going to work. I had two main options. One was to work things like wxWindows - where I would create all my objects with ID codes and their messages would be passed back to the frame, or to let most of the work take place within the actual object classes. I choose the second option in the end because I didn't want to deal with huge switch statements to sort the messages. So now if the user creates a wants to make a button to do something, like exit, they would make a class CExitButton : public CGUIButton, and then just overload the one relevent function.
I think this method should work well, considering that the GUI for this game won't be too complex. But it should allow me to rig up interfaces quickly.