代码之家  ›  专栏  ›  技术社区  ›  Edward Strange

替代MFC[关闭]

  •  21
  • Edward Strange  · 技术社区  · 14 年前

    https://stackoverflow.com/questions/149698/what-is-a-good-mfc-starting-book

    许多乐观的评论声称有更好的选择。我想知道它们可能是什么。

    我的主要要求是UI使用本机小部件,这样我们的自动化软件就可以工作了。用户绘制的窗口更难驱动。

    我不是特别喜欢MFC的设计,所以有一个替代方案是好的。我找到的唯一一个是WX,这是我们已经尝试过并正在考虑放弃的一个。我们需要一些不强迫我们用一堆我们不关心的跨平台包装物去战斗的东西。我们正在编写一个Windows应用程序,市场营销并没有给出一个针对Mac或Linux的废话(是的,这也让我的屁股受伤)。

    我看了一下.NET选项。问题是我对它不太了解,但从我所知道的来看,我们必须使用c来获得许多在mfc中随时可用的选项。例如,C++/CLI工具包在第一次浏览中似乎没有对接窗口。事实上,一个直接的WinFroms选择似乎也不是。看起来我们必须做一个WPF项目,而这似乎根本不是我们真正想要的(而且除了另一个工具包之外,我们还有大量的垃圾需要学习)。从C++中移出也需要大量的包装,而我并不特别喜欢我从自动包装器中看到的结果。

    我对.NET选项的另一个问题是,我们有一个非常吸引人的应用程序(除了需要很多表单)。我知道你可以用像.NET这样的JIT语言得到类似的结果,但我也知道你必须更加小心。这是我现在想避免担心的一个问题。

    另一个最重要的问题是.NET(至少是交换语言),我们有大量的接口逻辑,虽然应该是API不可知的,但是它是用C++编写的。

    那么其他的选择是什么呢?这些人真的有观点吗,或者他们只是在大喊大叫,反对任何不是他们最喜欢的语言或工具包的东西?

    注:
    这里的问题是什么??我特别指出,移植到其他平台甚至不是一个远程考虑,我必须有一些使用本机小部件集的东西,这样我们就不必完全改变测试用于自动化产品的所有东西!!!!!有人真的读过我的问题吗?

    6 回复  |  直到 10 年前
        1
  •  12
  •   Martin Beckett    14 年前

    Qt 是目前基于C++的GUI工具包唯一的真正答案(至少对于完整的桌面应用程序来说)。即使对于纯粹的Windows应用程序,它也是值得的——它还与Visual Studio(get the vs addin)进行了出色的集成,并且有很好的文档记录。

    WX有一些优点,一个是它与使用中的MFC非常相似,但是随着Qt的发展,LGPL WX的真正优势已经丧失了。

    编辑 Qt小部件不是本机的,但是它们使用本机样式API,因此如果使用默认样式,它们与本机小部件是不可区分的。

        2
  •  4
  •   Matt Brunell    14 年前

    Windows窗体将使用C++/CLI工作得很好。Windows窗体也恰好是围绕win32句柄的包装。

    与C +/Windows窗体相比,C/Windows窗体的性能没有差别。(它们的编译方式不同)就像你可以用C和VB.NET做同样的事情一样……

    如果您要查找停靠窗口,则有许多第三方库可以执行此操作。(有些是开源的,有些是可以购买的。)由于CLR,您可以直接包含用不同语言编写的程序集。

        3
  •  3
  •   winwaed    14 年前

    MFC在当时还不错,但现在有点老了。一个很好的例子就是用更好的STL集合替换的集合。但是你问的是关于图形用户界面的东西。有一个wtl(Windows模板库),我认为它现在已经是开源的了。与MFC相比,它的占地面积要轻得多,但其设计工作方式是相同的——例如,大多数类具有相同的名称和方法名。

    不利的是,我发现文档相对不足,而且它似乎无法与Visual Studio向导一起工作。不过,这可能是我的问题——让它和魔法师一起工作是非常重要的。

        4
  •  2
  •   Nick    14 年前

    我处于大致相同的位置:大型应用程序、本机代码、前端使用MFC。我看不出有什么真正令人信服的替代方案,也看不出有什么理由去改变。

    尽管如此,让我提出一个意见。如果我正在做一个新的项目,它需要保存/继承大量的本地代码,我会考虑尝试用一个主要的本地(c++/CLI)主应用程序来做一个WPF前端。这是用Visual Studio 2010完成的,它主要是性能良好的,所以至少是可能的。WPF有一些UI好处,而且它可能更容易工作和测试(从自动化的角度),因为它是CLR代码。我不确定它是否值得投资和学习曲线,但对于具有大量本机代码的现代纯Windows应用程序,这是我考虑的另一种选择。

    希望有帮助。

        5
  •  2
  •   TheUndeadFish    14 年前

    提供其他答案中未提及的内容:

    从它的声音来看,您需要本机控制的唯一原因是自动化软件。需要自动化软件工作的唯一原因是测试。我假设一些自动测试被用于确保软件按预期工作。

    如果是这样的话,那么这里有一些事情需要考虑:在C/WPF领域中有一个相当流行的设计模式,称为模型视图视图模型。在这里不必过于详细,基本的想法是,您可以将实际的GUI控件(视图)与处理这些控件如何与应用程序中其余业务逻辑交互的代码分开。这段代码就是所谓的视图模型。除其他外,这也适用于这样的设计,即视图模型(以及应用程序的所有其余逻辑)可以通过典型的单元测试方法进行测试,而实际上不需要存在GUI控件。

    因此,自动化软件的任何测试都可能被直接的单元测试代码所取代。

    然而,我在这个领域的经验并没有我想的那么丰富。所以如果你考虑到这一点,我强烈建议进一步研究。作为一个开始,google术语如“model-view-viewmodel”和“mvvm”最终会产生一些关于该部分的更详细的讨论。

        6
  •  1
  •   Puppy    14 年前

    我见过qt使用得相当广泛。我个人没有使用qt,但是我看到了很多关于它的问题,远远超过了wxwidgets或mfc。我先从这个开始。