Private Sub Form_Resize()
    Me.WindowState = 2
End Sub

解决方案 »

  1.   

    Private Sub Form_Resize()
    Me.WindowState = 2
    End Sub
      

  2.   

    BorderStyle=0-None
    然后自己画一个TitleBar
      

  3.   

    楼主你理解错了你双击后发生的是“窗口化”事件(就是最大化的反向动作),肯定你原先系统里的“窗口化”刚好就是你看见的那么大,所以你看见的是“窗口往上蹦了一大块”,那是你的系统窗口大小的 DEFAULT 状态Border style = Fix single 设置只是不能最大化,并没有移除最小化事件,如果你想最大化后双击不会“窗口化”,需要自己截获窗口消息有关操作参看这个帖子:
    http://expert.csdn.net/Expert/topic/1490/1490576.xml?temp=.567898这是截获最大化消息,你把它改成截获 窗口化 消息,然后移除该消息就行
      

  4.   

    错了“Border style = Fix single 设置只是不能最大化,并没有移除最小化事件”是并没有移除“窗口化”事件
      

  5.   

    嘿嘿,VB窗口除了在 BorderStyle =2 的时候窗口最大化才是真的,其它都是假的。(微软经常骗人,不可轻信)。大家都知道最大化的窗口是不能改变大小,不能移动的吧,就如
     BorderStyle=2 时窗口最大化一样。但是,除了 BorderStyle=2 时以外,所有的(当然BorderStyle=0除外,没有标题栏供你拖动。)其它类型的窗体,即使你设置了windowstate = 2,运行时的窗体也只是铺满屏幕可用区域,并不是最大化,窗体照样可以拖得满天飞。要实现象你说的效果,正如wxy_xiaoyu(☆然也☆╭∩╮(︶︿︶)╭∩╮) ( 所说,得你自己去处理相应的消息。顺便说一句:大小的改变处理"WM_SIZING"消息,位置的改变处理"WM_MOVING"如果需要,我可以给你例子,祝你顺利~!
      

  6.   

    将窗口的Border style = Fix single改回来
      

  7.   

    我在消息拦截后的处理涵数里这么写到
    Public Function FrmMsg(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Select Case uMsg
        Case WM_NCLBUTTONDBLCLK
        Case WM_MOVING
        Case Else
             FrmMsg = CallWindowProc(OldFrmProc, hwnd, uMsg, wParam, lParam)
        End Select
    End Function
    大家可以看到我拦截了双击动作和移动动作,让它什么都不做,请问这样会有什么问题吗?
    另外WM_MOVING的值是多少,到哪能查到??
      

  8.   

    当我拦截WM_MOVING后,窗口是已经移动了,怎么在它移动之前就拦住它,不让他移动?
    我试了很多消息都不行啊,有谁知道怎么不让窗口移动吗?
      

  9.   

    to:vcbug 
    这是我在写Skins控件时的消息处理代码,希望对你有所帮助:
    Friend Function MessageProc(ByVal hWnd As Long, ByVal Message As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Dim rcResult As RECT
        
        Select Case Message
            Case WM_SIZING                  '窗体改变尺寸中
            
                '从内存中拷贝窗体外围矩形
                CopyMemory rcResult, ByVal lParam, Len(rcResult)
                
                '如果窗体处于最大化状态则不允许改变大小(保持窗体原来的外围矩形)
                If frmBody.WindowState = vbMaximized Then
                    CopyRect rcResult, rcWnd
                    OffsetRect rcResult, -lngFrameWidth, -lngFrameHeight
                Else
                    '限制矩形的最小宽度
                    With rcResult
                        If (wParam = WMSZ_LEFT) Or (wParam = WMSZ_TOPLEFT) Or (wParam = WMSZ_BOTTOMLEFT) Then
                            If .Right - .Left < lngCaptionMinWidth Then .Left = .Right - lngCaptionMinWidth
                        Else
                            If .Right - .Left < lngCaptionMinWidth Then .Right = .Left + lngCaptionMinWidth
                        End If
                    End With
                End If
                
                '将结果矩形返回
                CopyMemory ByVal lParam, rcResult, Len(rcResult)
                
                MessageProc = True
            
            Case WM_MOVING                  '窗体移动中
            
                '从内存中拷贝窗体外围矩形
                CopyMemory rcResult, ByVal lParam, Len(rcResult)
                
                '如果窗体处于最大化状态则不允许移动(保持窗体原来的外围矩形)
                If frmBody.WindowState = vbMaximized Then
                    CopyRect rcResult, rcWnd
                    OffsetRect rcResult, -lngFrameWidth, -lngFrameHeight
                End If
                '将结果矩形返回
                CopyMemory ByVal lParam, rcResult, Len(rcResult)
                MessageProc = True如果你还有不清楚的地方,可以再问我.再次对我造成的延误表示歉意,Sorry~!