Option Explicit'==去掉mdisysrm最大、最小化按钮函数申明=========== Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Const WS_MINIMIZEBOX = &H20000 Const WS_MAXIMIZEBOX = &H10000 Const WS_CAPTION = &HC00000 Const GWL_STYLE = (-16) Const MF_REMOVE = &H1000&Private Sub MDIForm_Load() '=======去掉窗体最大、最小化按钮======= Dim lWnd As Long lWnd = GetWindowLong(Me.hwnd, GWL_STYLE) lWnd = lWnd And Not (WS_CAPTION) lWnd = SetWindowLong(Me.hwnd, GWL_STYLE, lWnd)End SubPrivate Sub MDIForm_DblClick() End End Sub
如果想让窗体不可自由拖动,可以使用以下方法:Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As LongPrivate Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As LongPrivate Const SC_MOVE = &HF010&Private Const MF_REMOVE = &H1000&Private Sub Form_Load() Dim MyMenu As Long MyMenu = GetSystemMenu(Me.hwnd, False) RemoveMenu MyMenu, SC_MOVE, MF_REMOVE End Sub
請在 MDIForm 的宣告區中加入以下宣告#If Win32 Then Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long #Else Private Declare Function SetWindowLong Lib "User" (ByVal hwnd As Integer, _ ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "User" (ByVal hwnd As Integer, _ ByVal nIndex As Integer) As Long #End IfConst WS_MINIMIZEBOX = &H20000 '最小化 Const WS_MAXIMIZEBOX = &H10000 '最大化 Const GWL_STYLE = (-16)'在 MDIForm 的 MDIForm_Load 事件中加入以下程式碼 Sub MDIForm_Load() Dim lWnd As Long lWnd = GetWindowLong(Me.hwnd, GWL_STYLE) lWnd = lWnd And Not (WS_MINIMIZEBOX) '最小化 lWnd = lWnd And Not (WS_MAXIMIZEBOX) '最大化 lWnd = SetWindowLong(Me.hwnd, GWL_STYLE, lWnd) End Sub--------------------------------------------------------------------------------
我刚才说的那个是使窗体不能拖动(即不可以更改位置),如果要使窗体不能更改大小,则方法如下Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As LongPrivate Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As LongPrivate Const SC_SIZE = &HF000&Private Const MF_REMOVE = &H1000&Private Sub Form_Load() Dim MyMenu As Long MyMenu = GetSystemMenu(Me.hwnd, False) RemoveMenu MyMenu, SC_SIZE, MF_REMOVE End Sub
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Const WS_MINIMIZEBOX = &H20000
Const WS_MAXIMIZEBOX = &H10000
Const WS_CAPTION = &HC00000
Const GWL_STYLE = (-16)
Const MF_REMOVE = &H1000&Private Sub MDIForm_Load()
'=======去掉窗体最大、最小化按钮=======
Dim lWnd As Long
lWnd = GetWindowLong(Me.hwnd, GWL_STYLE)
lWnd = lWnd And Not (WS_CAPTION)
lWnd = SetWindowLong(Me.hwnd, GWL_STYLE, lWnd)End SubPrivate Sub MDIForm_DblClick()
End
End Sub
普通窗口的话,可以直接在属性中设定,
如果是MDI的窗体,那么最大化、最小化须用到API函数。
MaxButton和MinButton 属性可用BorderStyle=3
MaxButton和MinButton 属性不可用
如果想让窗体不可自由拖动,可以使用以下方法:Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As LongPrivate Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As LongPrivate Const SC_MOVE = &HF010&Private Const MF_REMOVE = &H1000&Private Sub Form_Load()
Dim MyMenu As Long
MyMenu = GetSystemMenu(Me.hwnd, False)
RemoveMenu MyMenu, SC_MOVE, MF_REMOVE
End Sub
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
#Else
Private Declare Function SetWindowLong Lib "User" (ByVal hwnd As Integer, _
ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "User" (ByVal hwnd As Integer, _
ByVal nIndex As Integer) As Long
#End IfConst WS_MINIMIZEBOX = &H20000 '最小化
Const WS_MAXIMIZEBOX = &H10000 '最大化
Const GWL_STYLE = (-16)'在 MDIForm 的 MDIForm_Load 事件中加入以下程式碼
Sub MDIForm_Load()
Dim lWnd As Long
lWnd = GetWindowLong(Me.hwnd, GWL_STYLE)
lWnd = lWnd And Not (WS_MINIMIZEBOX) '最小化
lWnd = lWnd And Not (WS_MAXIMIZEBOX) '最大化
lWnd = SetWindowLong(Me.hwnd, GWL_STYLE, lWnd)
End Sub--------------------------------------------------------------------------------
Dim MyMenu As Long
MyMenu = GetSystemMenu(Me.hwnd, False)
RemoveMenu MyMenu, SC_SIZE, MF_REMOVE
End Sub