It's too difficult to keep up with the various technologies that come in and out of favor (Win32, MFC, COM, .Net) so in my current project my app is separated into a core lib and a GUI. The lib is written as much as possible in pure, unmanaged C++, even keeping Win32
calls to a minimum. This increases portability and doesn't require many updates when the technology changes.
The GUI will have no restrictions and will use whatever whizbang, platform specific technology is available.