I'm planning to port or rewrite an MFC GUI C++ app, to use in a GNU/Linux environment, and hopefully make it cross-platform. The app has few, if any, dependencies other than MFC and the standard C++ library. The thing is, I have very little experience in GUI app programming, and in programming for Windows. My question: What does "de-MFC'ing" an application typically consist of? On the lowest level, every piece of code depending on MFC headers needs to be replaced with alternative code or an alternative dependency or both, but I would like a higher-level sketch of what the challenges and the kinds of effort required. Notes: * I intentionally haven't described the application, to focus the question on de-MFC'ing as a process. * In case it matters - I have significant C++ experience, just not with MFC and Windows. * Assume the app is "MFC-heavy", i.e. its reliance on MFC isn't just for the GUI, it goes all in on what MFC offers. But no other libraries (or rather, you can ignore anything else). * The GUI aspect is important...