Private 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
Private Const WM_SYSCOLORCHANGE = &H15
Private Const WM_NCMOUSEMOVE = &HA0
Private Const WM_COMMAND = &H111
Private Const WM_CLOSE = &H10
Private Const WM_DRAWITEM = &H2B
Private Const WM_GETFONT = &H31
Private Const WM_MEASUREITEM = &H2C
Private Const WM_NCHITTEST = &H84
Private Const WM_MENUSELECT = &H11F
Private Const WM_MENUCHAR = &H120
Private Const WM_INITMENUPOPUP = &H117
Private Const WM_WININICHANGE = &H1A
Private Const WM_SETCURSOR = &H20
Private Const WM_SETTINGCHANGE = WM_WININICHANGE
Private m_CoolMenuObj As CoolMenu
Public Property Set CoolMenuObj(ByVal vData As CoolMenu)
Set m_CoolMenuObj = vData
End Property
Public Property Get CoolMenuObj() As CoolMenu
Set CoolMenuObj = m_CoolMenuObj
End Property
Public Function WindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wparam As Long, ByVal lparam As Long) As Long
On Error GoTo ErrorHandle
Select Case msg&
'All other info are dynamic (I hope)
Case WM_SETTINGCHANGE: Call m_CoolMenuObj.GetMenuFont(True)
Case WM_SYSCOLORCHANGE: Call m_CoolMenuObj.GetMenuFont(True)