【问题标题】:Creating a GUI with MFC使用 MFC 创建 GUI
【发布时间】:2010-10-19 14:20:01
【问题描述】:

我最近开始学习 MFC(Prosise book),感觉很难。但最困难的部分似乎是关于创建用户界面。似乎您必须知道控件应放置的位置(而不是基于对话框的应用程序的情况)。

你如何解决这个问题?您是先在 Photoshop 中绘制应用程序,然后再测量距离吗?

此外,是否有任何 GUI 设计师? (减轻疼痛)。 我非常喜欢它,尤其是因为它的速度快,而且它不需要大框架。

欢迎任何经常做 MFC 编程的人给我建议,告诉我如何擅长 MFC 编程。

【问题讨论】:

    标签: user-interface mfc


    【解决方案1】:

    MFC 很简单,只要您保持它应该做的事情的界限(基本的 Doc/View、对话框、没有花哨的糖果 UI...);一旦你需要扩展基本行为,它就会变得越来越难。

    【讨论】:

      【解决方案2】:

      我不得不同意,对于 MFC 工作,作为 Visual Studio 一部分的资源编辑器可能是使用 MFC 的最简单方法。您可以将控件放在对话框上并将它们拉伸到适当的比例。郑重声明,MFC 一个框架,只是它作为 Windows 的一部分捆绑在一起。

      如果您希望控件调整大小,则需要添加一些代码来处理调整对话框大小时传递的调整大小(我认为是 ON_SIZE)消息。只要您不想一次调整太多东西的大小/重新定位,这还不错。

      就个人而言,我建议避免使用 MFC 来支持 WxWidgets。有一些很棒的 GUI 布局程序,例如 wxDesigner,可以轻松创建可调整大小的对话框和属性页。

      【讨论】:

        【解决方案3】:

        MFC 是一种痛苦,IMO。除非您需要使用 c++ 进行编程,否则我建议您将 C# 与 WPF 或 WinForms 一起使用。这要容易得多。如果你需要使用 c++,还有更好的 GUI 解决方案,比如 Qt。

        【讨论】:

        • 如果你需要 c++,因为有很多库并且想要一个 gui,我推荐 wxWidgets 或 QT。我建议走 MFC 路径。
        【解决方案4】:

        我已经使用 MFC 超过 10 年了。它还不错,只要您对在其他平台上运行您的应用程序不感兴趣,我会推荐它而不是其他非 Microsoft 框架。如果您希望您的应用程序看起来像一个对话框,请使用 Aardvark 建议的 CFormView 并使用对话框编辑器对其进行布局。在我的许多 MFC 程序中,视图是 CListViews 或类似资源管理器的应用程序,左侧是树,右侧是 ListView。我们经常使用的另一个是带有选项卡控件和属性页的通用 CView。在那些中,您没有布局问题。您只需创建控件并将它们放置在距边缘一些预定义的距离处。散文非常好。这就是让我继续使用 MFC 的原因。查看 CodeProject.com 了解一些扩展 MFC 的类,例如,调整对话框和属性表的大小。 布赖恩

        【讨论】:

        • 即使 6 年后,如果你想要一个 windows 应用程序,或者如果你有人力为每个平台设计一个原生 GUI,我说 MFC 仍然比 QT 更好。
        【解决方案5】:

        一个典型的 MFC 应用程序有一个顶级框架窗口和一些子视图窗口和控制栏。这些东西通常都不需要手动定位,尽管有时您需要在构建过程中指定初始大小。您可以使用 Visual Studio 的对话框编辑器来布局对话框。手动编写定位代码应该很少见。

        【讨论】:

          【解决方案6】:

          您使用的是哪个版本的 Visual C++?我使用的所有版本都带有一个非常好的图形工具,用于放置和编辑 GUI 组件。我通常会添加所需的基本组件,为它们编写一些代码以查看它们的外观,然后在我确定一个并添加其他组件之前尝试不同的布局来移动东西。

          尽管我多年来一直在断断续续地编写 MFC 应用程序并且非常喜欢它,但我不得不同意发帖人的观点,他问你为什么要费心学习。这些天你可能会更好地利用你的时间学习 C# 或 Java。

          【讨论】:

          • +1 来自我。这就是我用来破解 MFC 应用程序的方式。现在,我使用 wxPython 完全可以让一个工作程序运行并可用!
          【解决方案7】:

          MFC 应用程序可能会变得非常臃肿(例如,应用程序的可执行文件大小、内存占用量很大,和/或需要与您的应用程序一起使用运行时 DLL)。如果您专注于 C++,我建议您改用 WTL(以前是 Microsoft 库,但现在在 SourceForge 上)。它是 MFC 的一个非常轻量级的替代方案(使用模板),语法相似。

          最近我的大部分应用程序(包括 GUI)都放弃了 C++ for Java,而且我不打算回去。

          【讨论】:

          • MFC 臃肿而 Java 不是:))?
          • 我无法忍受 Java GUI 的外观和感觉。他们太可怕了。我不知道有谁更喜欢 java ui 而不是原生 UI
          • @Tim Java 支持许多外观和感觉,例如窗口原生等。所以 Java 也是最好的,并且非常容易使用,并且有非常强大的布局可以处理调整大小等问题......
          【解决方案8】:

          如果您想要 MFC 应用程序中对话框的布局功能,则从 CFormView 派生 CView 类。这应该看起来很像 .NET WinForms、VB6 等基于“表单”的 GUI...

          这可以通过新应用程序向导在 Generated Classes' Base Class 下拉部分下完成(我在 VS 2008 上检查过)。

          您也可以只创建一个基于对话框的应用程序 - 您似乎已经很熟悉了。

          还有其他几个 CView 派生类提供了其他方法来设计应用程序的“视图”。使用默认 CView 作为您的基类(向导默认创建)假定您将手动创建“控件”和/或绘制屏幕。绘画(实际上是使用 GDI 绘制显示)是老式 Win32 开发人员所熟悉的东西,但在更现代的框架中通常从未这样做过。

          【讨论】:

            【解决方案9】:

            很多时候,您使用对话框资源编辑器和数据绑定在 MFC 中创建 UI(您可以拥有基于对话框的视图)。如果您不创建对话框,那么通常您会考虑一些用于控件布局的算法,然后实现它。

            【讨论】:

              【解决方案10】:

              您可以使用 MFC 获得出色的结果,而无需添加任何其他框架。 这是我创建的实用程序的example

              【讨论】:

                【解决方案11】:

                在 GUI 中使用 QT。我相信你会喜欢的............

                【讨论】:

                • 您能告诉我们一些优势吗?
                猜你喜欢
                • 2013-09-19
                • 1970-01-01
                • 1970-01-01
                • 2015-08-20
                • 1970-01-01
                • 1970-01-01
                • 2011-07-09
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多