将MFC类转换为C ++标准库

时间:2014-03-22 01:50:14

标签: c++ boost mfc

我正在做一些研究,看看是否可以将基于MFC的Windows应用程序转换为基于HTML5浏览器的应用程序。但是,我想将一些非可视类保存在一个单独的库中,可以根据需要从浏览器调用或由其他应用程序使用。大多数情况下,这个非可视化代码是使用字符串,集合等的CObject派生数据类。我对C ++标准库并不是很熟悉,是否可以将大部分现有代码发布到它而没有太多问题?另外,如果我想移植序列化代码,我可以使用类似Boost序列化库的东西作为标准库的扩展吗?

是否有任何工具可以帮助进行此类转换,并找出潜在问题?

1 个答案:

答案 0 :(得分:0)

使用不同的UI技术替换应用程序的UI层当然是可能的。这将究竟有多困难将取决于现有应用程序架构中层的分离程度(即,更容易替换MVC应用程序的V'然后是模型所在的应用程序与演示逻辑相结合)

将非可视MFC代码保存在单独的库(通常是DLL)中很常见,但这通常意味着应用程序将继续作为MFC应用程序。

您的帖子中提到了一些不寻常的事情:

  1. 您正在谈论用Web UI替换桌面UI(MFC)(" HTML5")。除非您还要转换到Web应用程序,并将非可视代码放在服务器上,否则这仍然有些不寻常。也就是说,如果您使用html5搜索桌面应用程序"你会发现很多工具和讨论。对于某些应用程序,在浏览器的约束内编码UI仍然太有限(例如,对顶级窗口管理和放置的限制等)。如果您的目标是拥有更便携的桌面应用程序,则可能需要调查桌面UI库(例如Qt,wxWindows等)
  2. 除了提供一些相同的通用数据结构外,C ++标准库和MFC字符串和容器类有很大不同。 AFAIK没有自动工具可以从MFC转换为C ++标准库。同样,如果您的目标是可移植性,这是一个明智的步骤,您可以围绕C ++实现编写一些包装类来帮助调整您的代码(尽管这可能是重新实现类甚至整个库的好机会。)
  3. 除了标准库之外,考虑使用Boost库是一个不太常见的事情 - 它们是高质量的库,并且可以为您节省大量时间。