Сначала я посмотрю, отделен ли графический интерфейс от остальной части приложения. В MFC это включает ограничение использования служебных классов, таких как CString
, только для кода с графическим интерфейсом.
Если код хорошо продуман таким образом, проще всего, вероятно, оставить код MFC GUI в покое и просто создать новый графический интерфейс для других платформ, используя собственную библиотеку графического интерфейса для каждой новой платформы. , Это придаст приложению надлежащий внешний вид и поведение, чего действительно трудно достичь любым другим способом.
Если логика приложения перемешана с кодом GUI, самое время спросить, можете ли вы выделить ресурсы для создания правильного разделения с целью выполнения вышеупомянутого, как только вы достигните разделения. Это рискованно с точки зрения бизнеса, потому что может показаться, что вы приложили немало усилий и просто вернулись к тому, с чего начали. Пока вы не начнете работать над новым графическим интерфейсом поверх измененного приложения, ваши спонсоры не увидят реального прогресса.
Вы также можете посмотреть на переносимые библиотеки GUI, такие как wxWidgets и Qt .
Я запрограммировал как для MFC, так и для wxWidgets, и они концептуально очень похожи. Мне никогда не приходилось переносить код с одного на другой, но я однажды сделал перенос с OWL от Borland на MFC, что было аналогичным опытом. Такие вещи не особенно сложны; это просто молоть Я могу рекомендовать делать это только тогда, когда у вас есть несколько причин для удаления старой библиотеки GUI. Например, возможно, вы также думали полностью отказаться от Visual C ++ или перейти с Professional на Express, потеряв доступ к MFC. Если вы планируете придерживаться VC ++ Professional (или более поздней версии), становится трудно оправдать отказ от графического интерфейса MFC.