vb6 MDI应用程序-当MDI表单最大化时,它会出现在状态底部栏问题下方

时间:2018-12-20 11:48:29

标签: vb6 mdi

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

这是一个MDI表单应用程序,它具有1个主窗口,该窗口的顶部是菜单,底部是状态栏,还有2个其他状态,如条形图。在该主框架中还有大约50个子窗口。

当用户最大化任何子窗口时,似乎该窗口已最大化,但没有注意到底部的工具栏,并且其下方的工具栏也最大化(不可见),因此子窗口的底部与顶部的顶部不相交。工具栏。

我已经完成了4张图片,显示它是设计时间,正常运行时间,然后最大化,因为您可以看到它隐藏了按钮。

我以前从未见过

我试图在子级Private Sub Form_Resize()事件中编写一些调整大小的逻辑来抵消此问题,但是,它根本没有任何作用。

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

在表单上添加/删除的控件均未更改,据我所知,我尚未更改任何表单/控件值。

我也尝试过将控件放到前面,然后放到后面,等等,

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

每个人都曾经见过这个或有任何想法

感谢您的阅读,我们将不胜感激

谢谢

normal working not maxed

maxxed screen showing issue

maxxed even with top menu closed

design time vb6

2 个答案:

答案 0 :(得分:2)

用于子窗体的纯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多年了,请原谅任何代码缺陷。

答案 1 :(得分:-1)

我还没有解决方案,但是我的应用遇到了同样的问题。我认为该问题是由Win-7 / Win-10虚拟桌面引起的。 VB6应用程序认为它正在使用整个屏幕,但是任务栏位于单独的虚拟屏幕上,该虚拟屏幕位于顶部。如果解决了,我会在这个线程中发布...