Private Sub Form_Load()
Me.WindowState = 2
prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub
Private Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'module1:
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
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
Public Const GWL_WNDPROC = (-4)
Public Const WM_SYSCOMMAND = &H112
Public Const SC_RESTORE = &HF120&
Public prevWndProc As Long ''''ĬÈÏ´°¿Ú³ÌÐòµØÖ·
Public 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_SYSCOMMAND Then
If wParam = SC_RESTORE Then
Exit Function
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End If
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Exit Function
ShowErr:
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Exit Function
End Function
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Sub Form_Load()
Dim hMenu As Long
hMenu = GetSystemMenu(Me.hwnd, 0)
Call DeleteMenu(hMenu, SC_RESTORE, MF_BYCOMMAND Or MF_GRAYED)
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert 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
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const GWL_STYLE = (-16)
Public Const WS_SYSMENU = &H80000
Public Const WS_MAXIMIZEBOX = &H10000
Public Const MF_BYPOSITION = &H400&
'把windowstate=2其他属性正常
Private Sub Form_Load()
'屏蔽窗体最大化按钮
Dim Win_Style As Long
Dim HsysMenu As Long
Win_Style = GetWindowLong(hwnd, GWL_STYLE) And Not WS_MAXIMIZEBOX
SetWindowLong hwnd, GWL_STYLE, Win_Style
'屏蔽鼠标拖动
HsysMenu = GetSystemMenu(Me.hwnd, False)
RemoveMenu HsysMenu, 1, MF_BYPOSITION
End Sub
Private Sub Form_Resize()
'不让窗体恢复正常状态
'SysInfo为系统信息控件
If Me.WindowState <> 1 Then
Me.Top = SysInfo.WorkAreaTop
Me.Height = SysInfo.WorkAreaHeight
Me.Left = SysInfo.WorkAreaLeft
Me.Width = SysInfo.WorkAreaWidth
End If
End Sub
这个是我自己做的,不知道是不是楼主的意思