|
Option Explicit
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 Declare Function GetSystemMenu Lib "user32" (ByVal _
hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu _
As Long, ByVal nPosition As Long, ByVal wFlags 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 Const GWL_STYLE = (-16)
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_THICKFRAME = &H40000
Private Const SC_CLOSE = &HF060
Private Const SC_MAXIMIZE = &HF030
Private Const SC_MINIMIZE = &HF020
Private Const SC_MOVE = &HF010
Private Const SC_RESTORE = &HF120
Private Const MF_BYCOMMAND = &H0
Private Const MF_BYPOSITION = &H400
Private Const MF_REMOVE = &H1000&
Public Sub SetFormStyle(ByVal frm As Object)
Dim nStyle As Long
Dim nMenu As Long
Dim nCount As Long
With frm
nStyle = GetWindowLong(.hWnd, GWL_STYLE)
nStyle = nStyle And Not (WS_MAXIMIZEBOX Or WS_MINIMIZEBOX _
Or WS_THICKFRAME)
SetWindowLong .hWnd, GWL_STYLE, nStyle
nMenu = GetSystemMenu(.hWnd, 0)
RemoveMenu nMenu, SC_MAXIMIZE, MF_REMOVE Or MF_BYCOMMAND
RemoveMenu nMenu, SC_MINIMIZE, MF_REMOVE Or MF_BYCOMMAND
RemoveMenu nMenu, SC_MOVE, MF_REMOVE Or MF_BYCOMMAND
RemoveMenu nMenu, SC_RESTORE, MF_REMOVE Or MF_BYCOMMAND
nCount = GetMenuItemCount(nMenu)
RemoveMenu nMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION
DrawMenuBar .hWnd
End With
End Sub
|
|