gpt4 book ai didi

mfc - 需要向旧版 MFC 对话框应用程序添加锚定/停靠

转载 作者:行者123 更新时间:2023-12-05 00:20:38 27 4
gpt4 key购买 nike

我正在使用我认为是在 90 年代初开发的 MFC 代码。我被赋予了将软件带入 21 世纪的艰巨任务,使其能够在 Windows 7/8 之类的系统上运行。该应用程序面向众多平台,其中一个是 Windows XP。原始软件具有固定的窗口大小,在某些操作系统上看起来很糟糕。我已经设法克服了这个问题,但是调整对话框的大小会留下很多灰色空间。我需要合并 anchor 和对接,类似于 .NET。

与往常一样,时间是有限的,所以我需要快速、“肮脏”的解决方案,直到我有时间重写 UI 层。该应用程序包含许多“屏幕”,每个屏幕都遵循类似的格式。顶部的横幅,内容包括版权、LHS 上的帮助和 RHS 上的任务按钮以及一种包含“热键”的页脚控件。

作为一个快速修复,我认为调整对话框大小应该会导致以下问题。

  • 横幅左右锚定
  • LHS/RHS 内容拆分为 60/40
  • 页脚是根据横幅

  • 由于不同的控件用于不同的目标操作系统/平台,因此这变得更加困难。基本上,OnInitDialog 使用条件编译来根据平台动态添加控件。

    为了实现这一点,我猜我需要类似以下的东西......
  • 每个控件“记住”它的边界
    我希望这会很棘手,因为对话框子控件没有 WM_CREATE 消息。
    可能使用 OnParentNotify。
  • 调整对话框大小会“记住”它的最后大小并计算宽度和高度的差异。
    该对话框向其直接子级发送父级调整大小消息,以便他们可以重新计算布局。

  • 最后,我的问题是解决这个问题的最佳方法是什么?
    我有一个想法...
  • 引入一个新的 Widget 类,该类扩展 CWnd 并通过虚拟方法返回 anchor 详细信息。
  • 创建实现 Widget
  • 的控件,例如 Cbanner、CCopyright、CFooter 等
  • 为适当调整 LHS 和 RHS 内容大小的内容创建 RowWidget。

  • 现在这很难用语言表达!
    任何帮助表示赞赏。

    谢谢

    卡尔

    最佳答案

    实际上是一个非常常见的问题,您的推理是合理的,但与其重新发明轮子,不如先看看您描述的一些免费提供的实现。

    例如 this CodeProject article做我认为你需要的。

    关于mfc - 需要向旧版 MFC 对话框应用程序添加锚定/停靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090609/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com