SmartWin++ 与 MFC、WTL 是什么关系,设计上有什么特点?

更新时间

SmartWin++ 是一个开源的 C++ GUI 和 SOAP 库,最初的设计目标就是替代 MFC 和 WTL。它采用现代 C++ 风格,尽可能使用 STL、必要时引入 boost,并把所需依赖打包进下载包,降低配置负担。它采用 BSD 许可证,可免费用于商业和开源应用;官方支持的编译器为 Microsoft Visual C++ 2003、Visual C++ 2005 和 MinGW/gcc 3.4,目标平台包括桌面 Windows、Pocket PC、Windows Mobile 和 Windows CE,并正在推进通过 WineLib 在非 Windows 系统上使用。

与 MFC、WTL 的关系

根据项目主页的说明,SmartWin++ 最初是为了替换 MFC 和 WTL 而创建的。这意味着它面向同一类需求:用 C++ 开发 Windows 图形界面应用。区别在于它的定位是“现代设计”的库,而不是延续旧有框架的设计思路。对于已经在用 MFC 或 WTL 的开发者,可以把 SmartWin++ 理解为同一问题域下的另一个选择,而不是对二者的封装或扩展。

设计取向上的几个特点

现代 C++ 风格:STL 优先,必要时用 boost

SmartWin++ 在实现中尽可能使用 STL,在需要的地方引入 boost。这带来的直接好处是接口和数据结构更贴近标准库的使用习惯。同时项目明确说明:下载 SmartWin++ 后不需要单独下载 boost,除 C++ 编译器外所需内容都捆绑在下载包中。这一点对配置环境比较敏感的开发者比较友好。

依赖捆绑,降低上手门槛

项目对开发环境的建议体现了同样的思路:

  • 使用 Dev-C++ 时,只要下载捆绑 MinGW/gcc 3.4.2 的版本,编译器所需内容就都齐了,并且自带 IDE,配置起来比手工搭建更省事。
  • 使用 VC++ Toolkit 时,还需要额外下载 Windows Server 2003 SP1 Platform SDK;如果想配 IDE,可以看 Eclipse,但项目也坦言这条路要“靠自己”。
  • 如果已有 Visual Studio C++ 7.1 或 2005 的完整副本,就可以直接使用完整 IDE。

此外,项目特别提到 Sally——一个专门支持 SmartWin++ 的简单 C++ IDE,提供 WYSIWYG 和 RAD 能力,不过当时仍处于早期 Beta 阶段。

平台范围与扩展方向

SmartWin++ 面向 Windows 桌面、Pocket PC、Windows Mobile 和 Windows CE 系统开发应用。借助 WineLib,它也可以用于非 Windows 系统,项目称这方面工作“进展很大”,但仍在推进中。如果你的目标平台是上述 Windows 系列,它属于原生支持范围;如果要在非 Windows 系统上使用,应把它视为仍在完善中的方向。

怎么判断是否适合你

如果你需要一个 BSD 许可、可商用、设计上贴近 STL 的 C++ Windows GUI 库,并且编译器在官方支持列表内(VC++ 2003、VC++ 2005、MinGW/gcc 3.4),SmartWin++ 值得进一步了解。如果你依赖更新的编译器或工具链,需要注意官方支持列表停留在上述版本;若要在非 Windows 平台使用,则应先确认 WineLib 相关工作的当前状态,再作决定。