내 VB6 응용 프로그램은 대개 숨겨져 있고 트레이 아이콘이 있습니다. 그대로트레이 아이콘에서 마우스 이동 및 마우스 클릭 모두 처리
Const WM_NCDESTROY = &H82
Const WM_CLOSE = &H10
' If we're being destroyed, remove the tray icon
' and restore the original WindowProc.
If Msg = WM_NCDESTROY Or Msg = WM_CLOSE Then
RemoveFromTray
ElseIf Msg = TRAY_CALLBACK Then
' The user clicked on the tray icon.
' Look for click events.
If lParam = WM_RBUTTONUP Then
' On right click, show the menu.
SetForegroundWindow TheForm.hwnd
TheForm.PopupMenu TheMenu
If Not (TheForm Is Nothing) Then
PostMessage TheForm.hwnd, WM_NULL, ByVal 0&, ByVal 0&
End If
Exit Function
End If
End If
는 응용 프로그램이 작동하고 마우스 오른쪽 clickign이 아이콘이 제공 :
Public Const WM_USER = &H400
Public Const TRAY_CALLBACK = (WM_USER + 1001&)
With GTStruct
.uID = mId
.hwnd = frm.hwnd
.hIcon = frm.Icon.Handle
.UFlags = NIF_ICON Or NIF_MESSAGE
.uCallbackMessage = TRAY_CALLBACK
.cbSize = Len(GTStruct)
End With
Shell_NotifyIcon NIM_ADD, GTStruct
WindowProc가 TRAY_CALLBACK와 클릭 메시지를 처리 : 현재이 코드에 따라 사용자 정의 콜백을 처리 메뉴를 엽니 다. 그래서 나는이에 콜백 변경이 기존 콜백 메시지 외에 MOUSE_MOVE 메시지를 처리 할 :
.uCallbackMessage = TRAY_CALLBACK Or WM_MOUSEMOVE
그러나, 이것은 MouseMove 이벤트 메시지를 무시합니다. 내가 사용하는 경우 :
.uCallbackMessage = WM_MOUSEMOVE
mouse_move 메시지가 제대로 작동하고 Form_MouseMove가 제대로 호출되었지만 메뉴가 작동하지 않습니다.
내가 마우스를 이동하고 마우스 모두 클릭 처리하기 위해 여러 콜백을 지정할 수있는 방법 질문
?