楼主啊,根据你的要求,我给你简化了一下,自己看吧:======================= '''新建一个 MDI 窗体,COPY 下面的代码: Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Const MF_BYPOSITION = &H400& Const MF_REMOVE = &H1000&Private Sub MDIForm_Load() Me.WindowState = 2 Dim hSysMenu As Long, nCnt As Long hSysMenu = GetSystemMenu(Me.hwnd, False) If hSysMenu Then nCnt = GetMenuItemCount(hSysMenu) If nCnt Then RemoveMenu hSysMenu, 0, MF_BYPOSITION Or MF_REMOVE DrawMenuBar Me.hwnd End If End If
prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc End SubPrivate Sub MDIForm_Unload(Cancel As Integer) SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc End Sub ''''新建一个模块,COPY 下面的代码: 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 Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const GWL_WNDPROC = (-4) Public Const WM_NCLBUTTONDBLCLK = &HA3Public prevWndProc As LongPublic Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long On Error GoTo ShowErr If Msg = WM_NCLBUTTONDBLCLK Then Exit Function End If WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) Exit Function ShowErr: WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) Exit Function End Function
windowstate属性控制窗体运行时的状态。
至于不让用户改动窗体大小,则可以更改窗窗体的类型,默认值是2,把它改为1就行了!好像是bodysyle属性吧!
我要怎么做!
'''新建一个 MDI 窗体,COPY 下面的代码:
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&Private Sub MDIForm_Load()
Me.WindowState = 2
Dim hSysMenu As Long, nCnt As Long
hSysMenu = GetSystemMenu(Me.hwnd, False)
If hSysMenu Then
nCnt = GetMenuItemCount(hSysMenu)
If nCnt Then
RemoveMenu hSysMenu, 0, MF_BYPOSITION Or MF_REMOVE
DrawMenuBar Me.hwnd
End If
End If
prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
End SubPrivate Sub MDIForm_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End Sub
''''新建一个模块,COPY 下面的代码:
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
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const GWL_WNDPROC = (-4)
Public Const WM_NCLBUTTONDBLCLK = &HA3Public prevWndProc As LongPublic Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error GoTo ShowErr If Msg = WM_NCLBUTTONDBLCLK Then
Exit Function
End If
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Exit Function
ShowErr:
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Exit Function
End Function