我正在开发一个旧的Visual Basic 6应用程序,该应用程序刚刚开发出一个问题,它从未有过。
这是一个MDI表单应用程序,它具有1个主窗口,该窗口的顶部是菜单,底部是状态栏,还有2个其他状态,如条形图。在该主框架中还有大约50个子窗口。
当用户最大化任何子窗口时,似乎该窗口已最大化,但没有注意到底部的工具栏,并且其下方的工具栏也最大化(不可见),因此子窗口的底部与顶部的顶部不相交。工具栏。
我已经完成了4张图片,显示它是设计时间,正常运行时间,然后最大化,因为您可以看到它隐藏了按钮。
我以前从未见过
我试图在子级Private Sub Form_Resize()事件中编写一些调整大小的逻辑来抵消此问题,但是,它根本没有任何作用。
这让我相信,最大化时的窗口大小是通过Windows系统本身处理的,或者隐藏在vb的深处,而我无法更改它。
在表单上添加/删除的控件均未更改,据我所知,我尚未更改任何表单/控件值。
我也尝试过将控件放到前面,然后放到后面,等等,
我尝试过以各种方式更改zindex,没有影响
每个人都曾经见过这个或有任何想法
感谢您的阅读,我们将不胜感激
谢谢
答案 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应用程序认为它正在使用整个屏幕,但是任务栏位于单独的虚拟屏幕上,该虚拟屏幕位于顶部。如果解决了,我会在这个线程中发布...