目标:用户点击窗体最大化按钮时,不执行最大化的动作,而执行编程者自定义的一些动作,比如将窗体大小变化为制定的大小,而非最大化,请问如何实现呢?
    初步方案:想办法截取系统的最大化的命令,然后执行自定义的函数来实现目标动作;
    或者还有别的更方便的办法来实现这个目标呢?   

解决方案 »

  1.   


    Option ExplicitPrivate Sub Form_Resize()
        Select Case Me.WindowState
            Case 0  '一般大小
                
            Case 1  '点中最小化
            
            Case 2  '点中最大化
                Me.WindowState = 0
                Me.Width = 800 * 15
                Me.Height = 600 * 15
        End Select
      

  2.   

    楼上的办法不行,Form_Resize()中改变窗体大小时会报814错误。
    1楼,想最好不自己重画标题栏的。
      

  3.   

    不好意思,搞错了,没看到还有“Me.WindowState = 0”的
      

  4.   

    Veron_04 你好,再问一下,此时最大化按钮的图不再改变了,一直是最大化的状态,不会变为恢复的图标,并且每次按下都是将窗体大小变为 Me.Width = 800 * 15
                               Me.Height = 600 * 15
    ,如何再按下就恢复窗体初始大小呢?请指教,谢谢! 
      

  5.   


    定义一个bealoon变量,当你点击最大化,变量值为true,再次点击变量值变为false,通过判断变量值来切换最大化和原始状态-----------------------------
    女子女子穴习,二人二人向下
      

  6.   

    这个我刚实现了,目前主要想要图标变化的,本来想自己画一个标题栏算了,可是又发现当窗体有菜单栏时,即使将Form.BorderStyle设置为0 ,无法隐藏窗体的标题栏的,请高手指教啊?
    如何最方便的实现最大化图标也跟着变化的,谢谢!
      

  7.   


    将Form.BorderStyle设置为0 ,无法隐藏窗体的标题栏的>>需要同时把form的controlbox属性设为false
    如何最方便的实现最大化图标也跟着变化的>>那得你手动对图标进行设置-----------------------------
    女子女子穴习,二人二人向下
      

  8.   

    请问xiaolinyouni:
        如何手动对那个最大化图标进行改变呢?
      

  9.   

    将form的controlbox属性设为false之后,只是最大化、最小化及叉叉按钮不见了,标题栏还在,我本想着标题栏不显示,然后菜单栏可以移动,再放置一个Image控件在窗体顶上的,自己画最大化按钮等,哎,貌似无法实现啊!
      

  10.   

    判断一下上一次的状态,就可以实现
    比如,你第一次是一般状态,你这次点击最大化按钮,那么窗体将“最大化”,你记录下当前窗体的状态,即“最大化”,当再次点击最大化按钮时,将其复原即可。参考:Option Explicit
    Dim lngNomarlWidth As Long  '一般状态时的宽
    Dim lngNomarlHeight As Long  '一般状态时的高
    Dim lngMaxWidth As Long     '最大化时的宽
    Dim lngMaxHeight As Long    '最大化时的高
    Dim intWindowState As Integer   '记录窗体的状态  0:一般;1:最小化;2:最大化Private Sub Form_Load()
        lngNomarlWidth = 400 * 15
        lngNomarlHeight = 300 * 15
        lngMaxWidth = 800 * 15
        lngMaxHeight = 600 * 15
        intWindowState = Me.WindowState
    End SubPrivate Sub Form_Resize()
        Select Case Me.WindowState
            Case 0  '一般大小
                intWindowState = 0
            Case 1  '点中最小化
                intWindowState = 1
            Case 2  '点中最大化
                If intWindowState = 2 Then
                    Me.WindowState = 0
                    Me.Width = lngNomarlWidth
                    Me.Height = lngNomarlHeight
                    intWindowState = 0
                ElseIf intWindowState = 0 Then
                    Me.WindowState = 0
                    Me.Width = lngMaxWidth
                    Me.Height = lngMaxHeight
                    intWindowState = 2
                End If
        End Select
    End Sub
      

  11.   

    谢谢Veron_04,用户点击最大化按钮将窗体变为制定的大小可以实现,现在主要问题是右上角那个图标无法改变,即始终处于待最大化的图标,请问有没有办法手动改变那个图标状态呢?