'Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'Private Const HWND_TOP = 0
'Private Const SWP_NOMOVE = &H2
'Private Const SWP_NOSIZE = &H1
'
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, byVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_THICKFRAME = &H40000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000setWindowLong hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) Xor _
                              (WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
    GetSystemMenu Me.hwnd, 1&
    SetWindowLong Me.hwnd, GWL_STYLE, MY_DIALOG
    SetWindowPos Me.hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE上法对普通窗体完全有效,但是如果是MDI的话,无法屏蔽双击标题栏

解决方案 »

  1.   

    Public Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
    Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As LongPublic Const MF_REMOVE = &H1000&
    Public Const SC_MAXIMIZE = &HF030
    Public Const SC_SIZE = &HF000&Private Sub MDIForm_Load()
    RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_MAXIMIZE, MF_REMOVE
    RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_SIZE, MF_REMOVE
    End Sub
      

  2.   

    很繁哦?
    Form.BorderStyle=2
    Form.MinBox=True
      

  3.   

    Form.BorderStyle=2
    Form.MinBox=True
      

  4.   

    在 mainformPrivate Sub Form_Load()
    DeflexionMessage Me.Hwnd
    End Sub在Module1Option Explicit
    '定义常数
    Public Const GWL_STYLE = (-16)
    Public Const GWL_WNDPROC = (-4)
    '定义变量
    Public PrevWndproc As Long
    '声明API函数
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal Hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Const WM_SYSCOMMAND = &H112
    Const SC_MAXIMIZE = &HF030&
    '-----------------------偏转消息
    Function DeflexionMessage(Hwnd As Long)
    '从指定窗口的结构中取得信息
    PrevWndproc = GetWindowLong(Hwnd, GWL_WNDPROC)
    '使用AddressOf函数将窗体消息转向wndproc模块
    SetWindowLong Hwnd, GWL_WNDPROC, AddressOf wndproc
    End Function
    '-------------------------------'-----------------------截获消息模块
    Function wndproc(ByVal Hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongIf Msg = WM_SYSCOMMAND Then Debug.Print wParamSelect Case Msg
    Case WM_SYSCOMMAND
            Select Case wParam
            Case 61490
                Debug.Print "MouseDdoubleClick"
                    wndproc = 0
                    Exit Function
            End Select
    End Select'将消息返还给原进程
    wndproc = CallWindowProc(PrevWndproc, Hwnd, Msg, wParam, lParam)
    End Function
    春天不是读书天
    夏日炎炎正好眠
    秋高气爽踢球去
    卖了书本好过年   :D
    -------------------------------
    海纳百川,有容乃大;
    壁立千仞,无欲则刚。