
I did some modifications to eliminate the conflict between PB and MS API
Code: Select all
Structure MY_NOTIFYICONDATA
cbSize.l
hWnd.i
uID.l
uFlags.l
uCallbackMessage.l
hIcon.i
szTip.s{128}
dwState.l
dwStateMark.l
szInfo.s{256}
StructureUnion
uTimeout.l
uVersion.l
EndStructureUnion
szInfoTitle.s{64}
dwInfoFlags.l
EndStructure
#WINDOW = 0
Enumeration
#BUTTON_SHOW
#BUTTON_HIDE
#SYSTRAYICON
EndEnumeration
Procedure MyCallback(WindowID, Message, wParam, lParam)
;If WindowID = WindowID(0)
If Message = #WM_NOTIFYICON ; Does that make sense?
;If wParam = #SYSTRAYICON
Select lParam
Case #NIN_BALLOONTIMEOUT
Debug "Balloon timed out or was closed by the user"
Case #NIN_BALLOONUSERCLICK
Debug "Balloon got clicked by the user"
Case #NIN_BALLOONHIDE
Debug "Balloon got hidden"
; Case #WM_MOUSEFIRST
; MessageRequester("Message", "Mouse Hover")
Case #WM_LBUTTONUP
MessageRequester("Message", "Left Button clicked.")
Case #WM_RBUTTONUP
MessageRequester("Message", "Right Button clicked.")
Case #WM_MBUTTONUP
MessageRequester("Message", "Middle Button clicked.")
EndSelect
;EndIf
EndIf
;EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(#WINDOW, 0, 0, 200, 75, "Icontest", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(#BUTTON_SHOW, 5, 5, 190, 30, "Show balloon message")
ButtonGadget(#BUTTON_HIDE, 5, 40, 190, 30, "Hide balloon message")
LoadImage(0, #PB_Compiler_Home + "\Examples\Sources - Advanced\Waponez II\Waponez.ico")
;AddSysTrayIcon(#SYSTRAYICON, WindowID(0), ImageID(0))
;SysTrayIconToolTip(#SYSTRAYICON, "Naah, I ain't no systray icon, I'm just cleanin' down 'ere.")
NIData.MY_NOTIFYICONDATA
NIData\cbSize = SizeOf(MY_NOTIFYICONDATA)
NIData\hWnd = WindowID(0)
NIData\uID = #SYSTRAYICON
NIData\uFlags = #NIF_ICON| #NIF_INFO | #NIF_MESSAGE |#NIF_TIP
NIData\hIcon = ImageID(0)
NIData\szTip = "Naah, I ain't no systray icon, I'm just cleanin' down 'ere."
NIData\uCallbackMessage = #WM_NOTIFYICON
NIData\uTimeout = 2
NIData\uVersion = #NOTIFYICON_VERSION
NIData\szInfoTitle = "Hey there!"
NIData\dwInfoFlags = #NIIF_INFO
Shell_NotifyIcon_(#NIM_ADD, NIData)
SetWindowCallback(@MyCallback(), 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #BUTTON_SHOW:
NIData\szInfo = "I'm just a small speech bubble."
Shell_NotifyIcon_(#NIM_MODIFY, NIData)
Case #BUTTON_HIDE:
NIData\szInfo = ""
Shell_NotifyIcon_(#NIM_MODIFY, NIData)
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
Shell_NotifyIcon_(#NIM_DELETE, NIData)
End