Ce code largement inspiré de ce qu'on peut trouver sur le forum anglophone permet d'afficher une notification en bas de votre écran et dans le centre de notification sous windows 10.
Une seule procédure.
- Notify(Title.s, Message.s, Flags = #NIM_MODIFY) Affiche une notification.
Sous Windows 10, la notification s'estompe après quelques secondes. L'utilisateur peut cliquer sur l'icone de fermeture.
La démo que je vous montre maintenant permet d'afficher un message de bienvenue lors de l’exécution du code et un message de fin quand on quitte l'application.
Code : Tout sélectionner
EnableExplicit
Enumeration Window
#MainForm
EndEnumeration
CompilerSelect #PB_Compiler_Processor
CompilerCase #PB_Processor_x86
Structure NOTIFYICONDATA_
cbSize.l
hwnd.i
uId.l
uFlags.l
uCallbackMessage.l
hIcon.i
szTip.s{128}
dwState.l
dwStateMask.l
szInfo.s{256}
StructureUnion
uTimeout.l
uVersion.l
EndStructureUnion
szInfoTitle.s{64}
dwInfoFlags.i
guidItem.GUID
hBalloonIcon.i
EndStructure
CompilerCase #PB_Processor_x64
Structure NOTIFYICONDATA_
cbSize.l
PB_Alignment1.b[4]
hWnd.i
uID.l
uFlags.l
uCallbackMessage.l
PB_Alignment2.b[4]
hIcon.i
szTip.s{128}
dwState.l
dwStateMark.l
szInfo.s{256}
StructureUnion
uTimeout.l
uVersion.l
EndStructureUnion
szInfoTitle.s{64}
dwInfoFlags.l
guidItem.GUID
hBalloonIcon.i
EndStructure
CompilerEndSelect
Global SysTrayInfo.NOTIFYICONDATA_
Declare Start()
Declare Notify(Title.s, Text.s, Message = #NIM_MODIFY)
Declare OnClick()
Declare Exit()
Start()
Procedure Start()
OpenWindow(#MainForm, 0, 0, 800, 600, "Demo ",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
LoadImage(0 ,#PB_Compiler_Home + "examples/sources/Data/world.png")
;Message de bienvenue
Notify("Hello", "Bienvenue dans ce programme de démonstration. J’espère que ça vous plaira.", #NIM_ADD)
BindEvent(#PB_Event_CloseWindow, @Exit())
Repeat : WaitWindowEvent() : ForEver
EndProcedure
Procedure Notify(Title.s, Message.s, Flags = #NIM_MODIFY)
If OSVersion() >=#PB_OS_Windows_Vista
SysTrayInfo\cbSize=SizeOf(NOTIFYICONDATA_)
ElseIf OSVersion() >=#PB_OS_Windows_XP
SysTrayInfo\cbSize=OffsetOf(NOTIFYICONDATA_\hBalloonIcon)
ElseIf OSVersion() >=#PB_OS_Windows_2000
SysTrayInfo\cbSize=OffsetOf(NOTIFYICONDATA_\guidItem)
Else
SysTrayInfo\cbSize=OffsetOf(NOTIFYICONDATA_\szTip) + SizeOf(NOTIFYICONDATA_\szTip)
EndIf
If SysTrayInfo\cbSize
SysTrayInfo\hwnd = WindowID(#MainForm)
SysTrayInfo\uFlags = #NIF_INFO
SysTrayInfo\dwInfoFlags=#NIIF_NONE|#NIIF_INFO
SysTrayInfo\dwState=#NIS_SHAREDICON
EndIf
SysTrayInfo\szInfoTitle=Left(Title, 63)
SysTrayInfo\szInfo=Left(Message, 255)
ProcedureReturn Shell_NotifyIcon_(Flags, @SysTrayInfo)
EndProcedure
Procedure Exit()
Notify("Information","A bientôt.")
End
EndProcedure