首页 > 解决方案 > vb6 MDI 应用程序 - 当 mdi 表单最大化时,它会出现在状态底部栏问题的下方

问题描述

我正在开发一个旧的 Visual Basic 6 应用程序,它刚刚开发了一个问题,它从来没有过。

它是一个 MDI 表单应用程序,它有 1 个主窗口,顶部有一个菜单,底部有状态栏,还有 2 个其他状态栏。它还有大约 50 个子窗口可以进入这个主框架。

当用户最大化任何子窗口时,似乎窗口最大化但没有注意到底部的工具栏并且它在它们下方最大化(看不见),因此子窗口的底部不会与工具栏的顶部相遇。

我已经做了 4 张图片,显示它是设计时、运行时正常然后最大化,你可以看到它隐藏了按钮。

我以前从未见过这个

我试图在子 Private Sub Form_Resize() 事件中编写一些调整大小的逻辑来抵消这种情况,但是,它根本没有效果。

这让我相信最大化时调整窗口大小是通过 Windows 系统本身处理的,或者深埋在 vb 中,我无法更改它。

在表单上添加/删除的控件都没有更改,据我记忆,我没有更改任何表单/控件值。

我也试过把控制放在前面,然后回来等等,没有影响

我试过以各种方式改变zindex,没有影响

大家有没有见过这个或者有什么想法

感谢您的阅读,任何帮助将不胜感激

谢谢

正常工作未达到最大值

最大屏幕显示问题

即使关闭顶部菜单也达到最大值

设计时间vb6

标签: vb6mdi

解决方案


子窗体的纯VB6解决方案:

Private Sub Form_Resize() 
  If WindowState <> vbMinimized then 
    Begin
      If WindowState = vbMaximized then
        WindowState = vbNormal
      Top = Me.Parent.Top + Me.Parent.TopToolbar.Height
      Height = Me.Parent.Height - Me.Parent.TopToolbar.Height - Me.Parent.BottomToolbar.Height
    End

诀窍是不允许最大化模式,并调整窗口大小以适应剩余空间。

与默认的最大化行为不同,标题栏仍位于 MDI 窗口的顶部。

自从我使用 VB6 以来已经 10 多年了,请原谅任何代码缺陷。


推荐阅读