【问题标题】:Is switch from MFC to QT or WTL (or other GUI toolkit) recommended for Windows CE development?对于 Windows CE 开发,是否建议从 MFC 切换到 QT 或 WTL(或其他 GUI 工具包)?
【发布时间】:2009-08-24 12:57:47
【问题描述】:

关于 Windows 的 C++ GUI 工具包有很多问题,但它们大多适用于桌面操作系统版本。

我现在正在为 Windows CE 5.0 VGA 手持设备启动一个 C++ 项目,并考虑选择什么 GUI 库。我有一些在 Windows CE 项目中使用 MFC 的经验,但是在 SO 中提到了 MFC 的一些已知弱点(例如,使用了相当过时的技术、糟糕的抽象、过度使用 C++ 预处理器等)。对于桌面项目,他们主要推荐 QT 和 WTL。同时 MFC 有一些特性对于嵌入式开发来说仍然相当重要。

那么,您认为花一些资源学习新的 GUI 工具包以从 MFC 切换是否合理,在这种情况下您会推荐什么工具包?还是说,对于 Windows CE 嵌入式开发来说,MFC 仍然是最重要的?

工具包最重要的特点是:适度的 CPU 和内存负载、较小的运行时大小、良好的面向对象设计、符合良好的现代 C++ 实践、陡峭的学习曲线、开发速度、商业外观、方便的调试和设计工具.

(项目中需要:串口通信、线程、绘图和图表绘制、ActiveSync通信。)

【问题讨论】:

  • 如果你知道的话,我说坚持使用 MFC。 Qt 和 WTL 很不错,但 GUI 框架都很难。 QT 中也有宏的使用。
  • 嘿,Qt 在“过度使用 C++ 预处理器”部门并不能真正帮助您。

标签: c++ user-interface embedded windows-ce


【解决方案1】:

我们在 Windows CE 5.0 项目上的 Qt 4.5 正在完成阶段,所以我尝试讲述 Qt 开发与 MFC 相比的优点/缺点。
Qt 加号:

  • 不错的 OOP 设计
  • 原生支持的信号/槽抽象允许更快速、更轻松地开发
  • Qt 支持多种功能(GUI、文件系统、网络、线程等)
  • LGPL 许可证允许免费开发商业应用程序
  • 开放源代码、示例、优秀的文档使学习曲线变得更加缓慢
  • 多平台库。我们能够在使用 Vista OS 的设备和桌面上运行我们的应用程序,而不会遇到任何问题。在 4.6 版本中添加了 Symbian 支持

Qt 的缺点:

  • 相当大的二进制文件(Core 和 Gui 模块 > 10 Mb,所有功能都“启用”,但您可以调整库构建并使库更小)
  • 与 MFC 相比,更大的内存和 CPU 使用率

我认为,与 Qt 相比,MFC 的主要优势在于其最小的内存和 CPU 占用。如果这不是问题 - 选择 Qt。
附言Com 端口通信和绘图不原生包含在 Qt 中,但存在基于 LGPL Qt 的库,它为您提供了这些功能(例如用于绘图的“Qwt”)。

【讨论】:

  • "LGPL 许可证允许免费开发商业应用程序" - 对吗?我认为对于商业应用,您应该购买非常昂贵的许可证。
  • 没有。 LGPL 变体不收取任何费用,但正如 LGPL 所述,您应该共享 Qt 库代码的任何更改。如果您选择商业变体,您可以关闭更改。 qt.nokia.com/products/licensing
【解决方案2】:

第一个优点是 QT 是一个跨平台的库。其次,MFC 是一个令人头疼的问题。用 MFC 做的最简单的事情可能会变成一个大问题。所以尽快从 MFC 转移到 QT。

【讨论】:

    【解决方案3】:

    如果您了解 MFC,请坚持使用它:它适用于 CE。与桌面 MFC 相比,当然有一些限制,但它们通常并不重要。我认为我们发现的主要问题是 MFC8 for CE (VS2005) 不支持打印。

    另一方面,如果您有一块空白画布,我建议您使用 .NET —— C# 或 VB,以您觉得最舒服的为准。

    【讨论】:

    • 如果您没有内存限制,那么 C# 是您最快的 TTM。对于大多数嵌入式应用程序来说非常容易,但紧凑的框架是一个巨大的内存消耗。如果您来自 C# 桌面背景,CF esp 中也有一些非常烦人的遗漏。
    • @EndsOfInvention:同意,来自 .NET 桌面环境的 Compact Framework 相对于完整的 .NET 比 MFC CE 相对于桌面 MFC 的缺失要多得多。
    【解决方案4】:

    如果您学习 QT,那么您将能够为诺基亚、英特尔和谷歌推出的所有其他 (Linux) 平台编写代码。这本身就使它成为最适合我的技术!

    对于代码的其他一些方面,您可能仍然需要查看其他库,但使用 QT 作为 GUI 永远不会是一个糟糕的选择。

    【讨论】:

    • 您不需要通过QT商业许可共享源代码。 LGPL QT 许可仅要求您分享对 Qt 源代码的更改。
    • 不仅是 Linux 平台,还有 Symbian。
    猜你喜欢
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多