【问题标题】:Need to port complex GUI interface projects from RAD Studio to Visual Studio需要将复杂的 GUI 界面项目从 RAD Studio 移植到 Visual Studio
【发布时间】:2019-05-14 21:04:31
【问题描述】:

我在一家公司工作,该公司维护多个用 C++ 编写的桌面应用程序项目。所有这些应用程序都有复杂的 GUI 界面。我所说的“复杂”是指与许多组件的接口、深层组件层次结构、框架的使用、第三方和/或支持透明度和动画等功能的自定义组件包。

到目前为止,我们一直使用 Embarcadero RAD Studio 套件来编写和维护我们的应用程序。然而每个新版本的许多重复出现的错误让我的上级感到厌烦,现在他们正在考虑迁移到 Visual Studio 的可能性。

我认为迁移用c++编写的应用程序核心功能不会是一个真正的问题。

但是,对于 GUI,这是另一回事。我以前在 Visual Studio 2003 编译器下有过复杂接口的经验,我记得创建和维护它们是一项痛苦的工作。没有真正的设计师,组件有限,很大一部分工作需要手动完成。从那以后,我查看了 Visual Studio 2017 提供的设计工具,我的第一印象是自那以后并没有太大变化。 c++ 项目的设计器仍然很初级,特别是与 RAD Studio VCL 相比,它具有良好的组件库。 C# API 比我需要的更接近,但我无法设想用 C# 重写我的所有代码作为一个严肃的选择。

我尝试搜索有关在这种情况下应用的良好做法的教程,但到目前为止我没有找到任何有用的信息。

我的问题是:

  1. 我能否在迁移到 Visual Studio 时恢复当前的 GUI 界面(至少是其中的一部分),还是必须计划从头开始重写所有内容?
  2. Visual Studio 是否提供类似于 VCL 的机制来编写 GUI 界面、安装第三方包和编写自定义组件?如果是,我在哪里可以找到相关信息?
  3. 这样的端口是否可能没有高剂量的头痛和流泪?我在哪里可以找到有关此类流程的相关信息?

【问题讨论】:

    标签: visual-studio porting rad-studio


    【解决方案1】:

    我目前还在开发使用 Embarcadero RAD Studio 和一些第 3 方 UI 控件开发的产品。开发是多年前完成的,所以它的 UI 风格相当陈旧。我尝试通过在 C++ 中开发应用程序逻辑和在 C#(WPF) 中开发 UI,在 Visual Studio 中迁移它。但它与编写新应用程序一样好,成本更高。所以我们停止了那个练习。然而我在这期间学到的是——

    1. 将 VCL 应用程序从 RAD Studio 迁移到 Visual Studio 就像编写新应用程序一样。没有一对一的映射(数据类型、结构、UI 控件等),您必须从头开始。此外,没有可用的工具可以帮助进行此迁移。
    2. 某些数据类型、数据结构、UI 控件在 RAD Studio 中很容易获得,而在 Visual C++ (MFC) 中则没有,反之亦然。因此,您必须在迁移应用程序逻辑时检查每一行代码。
    3. 没有可用于 Visual C++(MFC) 的第 3 方 UI 控件,可以让您的生活更轻松。对于 RAD Studio,您有 LMD 工具、businessSkinForms 等。
    4. 在 RAD Studio 工作超过 5 年之后,在 RAD Studio 中开发 UI 非常容易(C++ 中的 UI)。但是在 Visual Studio 中,您可以使用 C#(WPF) 开发您的 UI,这将是丰富的,并且可以与用 C++ 编写的应用程序逻辑进行通信。

    正如您所说,您有几个使用 RAD Studio 开发的桌面应用程序,而迁移到 Visual Studio 时则从较小的独立应用程序开始。这样你在迁移这个应用的过程中会有一定的信心,然后你就可以将这样迁移的小应用一个接一个地投入生产,而不会受到影响。

    ~尼勒什

    【讨论】:

    • 感谢您分享您的经验,这对我真的很有用。不幸的是,这正是我所怀疑的。我看到可以使用 C++ CLI 至少拥有一个真正的设计器(在本例中是 C# 设计器),但是当您来自 RAD Studio API 时,这仍然具有高度限制性。幸运的是,我们已经通过编写尽可能可移植和跨平台的代码来计划这种类型的场景。我的公司设想直到有可能为 Visual Studio 编写我们自己的设计师。如果可以的话,我会在这里提供有关它的消息。
    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 2020-07-08
    • 2018-11-16
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多