我想限制窗体在最大化的时候只能达到我所设定窗体的大小,窗体本身会小于屏幕尺寸,那么这个应该在什么事件下做?如果是在resize里面的话怎么区分是最大化了呢?然后当窗体小于设定的最大窗体后想要用滚动条来移动窗体内容,求问这个滚动条该怎么搞?以前没试验成功过.

解决方案 »

  1.   

    Private Sub Form_Resize()
        If WindowState = 2 Then
            WindowState = 0
             Me.Width = 8000
            Me.Height = 6000
        End If
    End Sub
      

  2.   

    这个是可以但点最大化后窗体闪烁得厉害,不实用.
    想实现类似
    If Form1.Width > 13575 Then Form1.Width = 13575
            If Form1.Height > 10500 Then Form1.Height = 10500
    这样改变后不会出现闪烁的,不知道如何才能实现
      

  3.   

    参考这个帖子
    例子是通过设定 MINMAXINFO.ptMinTrackSize 限制拖动时的最小尺寸;
    改为设定 MINMAXINFO.ptMaxSize 限制最大化时的尺寸,
    还可以加上设定 MINMAXINFO.ptMaxTrackSize  限制拖动时的最大尺寸。
      

  4.   

    楼上的方法也不错,要不你还可以用现成的第三方控件codejoke 里面有个扩展Form功能的,可以直接设置最大化时的大小。
      

  5.   

    Private Sub Form_Resize()
    static inbusy as boolean
       if inbusy then exit sub
       inbusy=true
        If WindowState = 2 Then
            WindowState = 0
             Me.Width = 8000
            Me.Height = 6000
        End If
       inbusy=false
    End Sub
      

  6.   

    不闪烁还有个办法,子类化,检测WM_WINDOWPOSCHANGING,得到结构WINDOWPOS,从里面判断.cx 和 .cy 然后改变在传回去,这样就可以了