VB6中窗口最大化时出错:当最小化时或最大化时不能移动或调整窗体的大小

用VB6设计的一个窗体:

由于使用的人多,为了能适应所有人的屏幕,所以在窗体的resize事件中对各个容器大小进行了变化:

Private Sub Form_Resize()
    '搜索框大小
    Frame1.Left = (Me.Width - 23490) + 20160
    Frame1.Height = Me.Height - Frame1.Top - 600
    lab条数.Top = Frame1.Height - lab条数.Height - 200
    labModel.Top = lab条数.Top - labModel.Height - 200
    labOrder.Top = labModel.Top - labOrder.Height - 200
    
    '订单列表框
    Frame4.Left = Frame1.Left - Frame4.Width - 200
    Frame4.Height = Me.Height - Frame4.Top - 600
    Frame7.Top = Frame4.Height - Frame7.Height - 200
    Frame5.Top = Frame7.Top - Frame5.Height - 200
    Frame6.Top = Frame5.Top - Frame6.Height - 200
    MSorderList.Height = Frame6.Top - MSorderList.Top - 200
    
    Frame2.Width = (Me.Width - 23490) + 15375 - 100
    MScontract.Width = Frame2.Width - 300
    
    Frame3.Width = (Me.Width - 23490) + 15375 - 100
    Frame3.Height = Me.Height - Frame3.Top - 600
    MSpart.Width = Frame2.Width - 300
    MSpart.Height = Frame3.Height - MSpart.Top - 200
End Sub

考虑到窗体基本功能的使用,所以想要限制窗体调整时的最小尺寸,当宽与高小于某个尺寸时就退出resize这个事件(注意,vb6中单位为twip,中文为缇,相当于1500为100分辨率):

    If Me.Width < 19500 Then
        Me.Width = 19500
        Exit Sub
    End If
    If Me.Height < 10500 Then
        Me.Height = 10500
        Exit Sub
    End If

由于台式电脑分辨率普遍都较大,没有出现问题,但却在使用笔记本的电脑上出了问题,会出现如下提示:

分析后发现原因是笔记本的分辨率的宽度尺寸比窗体设计的最小宽度更小,当最大化时,窗体的尺寸又不能缩到比限制的宽度还小,出现了矛盾,所以就出错了。

解决方法有两个,一是在resize中设定更小的宽高限制,使所有设备的分辨率都大于这个尺寸。

二是去掉原宽度的最小尺寸限制,爱多大都行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍德春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值