Find all our projects in development below.
All source code is GNU General Public License (GPL)
Browsing XButtonMod.bas (2.07 KB)
Attribute VB_Name = "XButtonMod"
Option Explicit
Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As Long
Private Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const SC_CLOSE As Long = &HF060&
Private Const xSC_CLOSE As Long = -10&
Private Const MIIM_STATE As Long = &H1&
Private Const MIIM_ID As Long = &H2&
Private Const MFS_GRAYED As Long = &H3&
Private Const WM_NCACTIVATE As Long = &H86
Public Sub EnableX(ByVal hWnd As Long, ByVal Enable As Boolean)
Dim hMenu As Long
Dim MII As MENUITEMINFO
Dim lngMenuID As Long
hMenu = GetSystemMenu(hWnd, 0)
MII.cbSize = Len(MII)
MII.dwTypeData = String(80, 0)
MII.cch = Len(MII.dwTypeData)
MII.fMask = MIIM_STATE
If Enable Then
MII.wID = xSC_CLOSE
Else
MII.wID = SC_CLOSE
End If
GetMenuItemInfo hMenu, MII.wID, False, MII
lngMenuID = MII.wID
If Enable Then
MII.wID = SC_CLOSE
Else
MII.wID = xSC_CLOSE
End If
MII.fMask = MIIM_ID
SetMenuItemInfo hMenu, lngMenuID, False, MII
If Enable Then
MII.fState = MII.fState And Not MFS_GRAYED
Else
MII.fState = MII.fState Or MFS_GRAYED
End If
MII.fMask = MIIM_STATE
SetMenuItemInfo hMenu, MII.wID, False, MII
SendMessage hWnd, WM_NCACTIVATE, True, 0
End Sub