cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 2014
-
6 nov. 2004 à 22:03
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 2019
-
7 nov. 2004 à 01:55
Salut, bien je voudrais que mon soft affiche plusieurs icones dans le systray seulement voilà lorsque je vais pour les affichés rien ne se passe, mon icone principale est déjà affichée.
Voici le code :
Private Type IconeTray
cbSize As Long 'Taille de l'icône (en octets)
hWnd As Long 'Handle de la fenêtre chargée de recevoir les messages envoyés lors des évènements sur l'icône (clics, doubles-clics...)
uID As Long 'Identificateur de l'icône
uFlags As Long
uCallbackMessage As Long 'Messages à renvoyer
hIcon As Long 'Handle de l'icône
szTip As String * 64 'Texte à mettre dans la bulle d'aide
End Type
Dim IconeT As IconeTray
Dim I(1 To 46) As IconeTray
'Constantes nécessaires
Private Const AJOUT = &H0
Private Const MODIF = &H1
Private Const SUPPRIME = &H2
Private Const MOUSEMOVE = &H200
Private Const MESSAGE = &H1
Private Const Icone = &H2
Private Const TIP = &H4
Private Const DOUBLE_CLICK_GAUCHE = &H203
Private Const BOUTON_GAUCHE_POUSSE = &H201
Private Const BOUTON_GAUCHE_LEVE = &H202
Private Const DOUBLE_CLICK_DROIT = &H206
Private Const BOUTON_DROIT_POUSSE = &H204
Private Const BOUTON_DROIT_LEVE = &H205
'API nécessaire
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As IconeTray) As Boolean
Private Sub Form_Load()
'Préparation de la variable IconeT
IconeT.cbSize = Len(IconeT) 'Taille de l'icône en octet
IconeT.hWnd = Me.hWnd 'Handle de l'application (pour qu'elle reçoive les messages envoyés lors d'un clic, double-clic...
IconeT.uID = 1& 'Identificateur de l'icône
IconeT.uFlags = Icone Or TIP Or MESSAGE
IconeT.uCallbackMessage = MOUSEMOVE 'Renvoyer les messages concernant l'action de la souris
IconeT.hIcon = Me.Icon 'Mettre en icône l'image qui est dans le contrôle "Image1"
IconeT.szTip = "Horloge Floue" & Chr$(0) 'Texte de la bulle d'aide
'Appel de la fonction pour mettre l'icône dans le système tray
Shell_NotifyIcon AJOUT, IconeT
'Création des icones texte
sLetter = "a1"
For ii = 1 To 46
I(ii).cbSize = Len(I(ii)) 'Taille de l'icône en octet
I(ii).hWnd = Me.hWnd 'Handle de l'application (pour qu'elle reçoive les messages envoyés lors d'un clic, double-clic...
I(ii).uID = 1& 'Identificateur de l'icône
I(ii).uFlags = Icone Or TIP Or MESSAGE
I(ii).uCallbackMessage = MOUSEMOVE 'Renvoyer les messages concernant l'action de la souris
I(ii).hIcon = LoadPicture("Caractères\Minuscule" & sLetter & ".ico") 'Mettre en icône l'image qui est dans le contrôle "Image1"
I(ii).szTip = "Horloge Floue" & Chr$(0) 'Texte de la bulle d'aide
Next ii
ii = 0
For ii = 46 To 1
Shell_NotifyIcon AJOUT, I(ii)
Next ii
End Sub
Merci d'avance
Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 6 nov. 2004 à 23:36
si tu veux plusieurs icones, il faut plusieurs formes.
ce qui t'oblige à avoir 46 formes.
le principe c'est de les dupliquer et d'arriver à passer les paramètres.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 7 nov. 2004 à 00:44
heu oui, mais ça t'obligerait à le mettre 46 fois, à moins de le dupliquer
Une classe c'est fait pour ça, c'est comme une collection d'objets avec des propriétés identiques.
essayes avec l'exemple que je t'ai montré , il suffit de faire ajouter module de classe.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 7 nov. 2004 à 01:55
j'ai modifié un peu et tester avec des icones dans imagelist
Public Sub CreateIcon(frmgeneral As Form, title As String, hicon As Picture, num As Long)
try.cbSize = Len(try)
try.hwnd = frmgeneral.hwnd
try.uID = num
try.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
try.uCallbackMessage = WM_MOUSEMOVE
try.hicon = hicon
mytitre = titre
try.szTip = title & vbNullChar
Call Shell_NotifyIcon(NIM_ADD, try)
Call Shell_NotifyIcon(NIM_MODIFY, try)
End Sub
For i = 1 To 3
Call m_icones(i).CreateIcon(Form1, "titre " & i, ImageList1.ListImages(i).Picture, i)
Next