Option Explicit
Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
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 wndrpcPrev As Long, _
ByVal hWnd As Long, ByVal uMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Public Const GWL_WNDPROC = -4
Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Declare Function AppendMenu Lib "user32" _
Alias "AppendMenuA" (ByVal hMenu As Long, _
ByVal wFlags As Long, ByVal wIDNewItem As Long, _
ByVal lpNewItem As String) As Long
Declare Function EnableMenuItem Lib "user32" _
(ByVal hMenu As Long, ByVal wIDEnableItem As Long, _
ByVal wEnable As Long) As Long
Public Const MF_SEPARATOR = &H800&
Public Const MF_GRAYED = &H1&
Public Const MF_STRING = &H0&
Public Const WM_SYSCOMMAND = &H112
Public Const WM_INITMENUPOPUP = &H117
Public m_wndprcNext As Long
Public Const IDM_INCR As Long = 1000
Public Function WindowProc _
(ByVal hWnd As Long, ByVal uMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Dim hSysMenu As Long
Static c As Integer
Select Case uMsg
Case WM_INITMENUPOPUP
If lParam \ 65535 And &HFFFF& Then 'HIWORD of lparam
hSysMenu = GetSystemMenu(hWnd, 0)
If wParam = hSysMenu Then
EnableMenuItem _
hSysMenu, IDM_INCR, ByVal IIf _
(Form1.WindowState = vbMinimized, MF_GRAYED, 0)
End If
End If
Case WM_SYSCOMMAND
Select Case wParam
Case IDM_INCR
c = c + 1
Form1.lblCount.Caption = CStr(c) & "回目"
End Select
End Select
WindowProc = CallWindowProc _
(m_wndprcNext, hWnd, uMsg, wParam, ByVal lParam)
End Function
|