Systray à plusieurs valeurs

Psykos7 Messages postés 60 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 21 février 2008 - 13 avril 2006 à 21:20
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 18 avril 2006 à 08:24
Bonjour, je souhaite pouvoir afficher un pourcentage dans le systray, mais je me vois mal creer 101 images (0% à 100%)

Y aurait-il un moyen d'ecrire sur une image et d'envoyer cette image dans le systray ?

Je n'ai pas trouvé dans la recherche sur le site

Merci à vous

Psykos 7® - http://Psykos7.free.fr

12 réponses

Utilisateur anonyme
13 avril 2006 à 21:26
Salut,

Avec quel langage travaille tu ?
En tout cas, il faut que tu fabrique ton image a partir du texte du pourcentage.

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
Psykos7 Messages postés 60 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 21 février 2008
13 avril 2006 à 21:29
ah desolé, c'est en VB6

La pour l'instant j'ai ete obligé de creer une image pour chaque valeur (0%, 1%, 2%...) mais c'est assez embetant et ca allourdit enormement le programme, car il ne fait pas que ca

aurais-tu un exemple pour creer une image avec texte, le tout en code ? ou a partir d'une image existante ? (comme ca je pourrais toujours mettre une image modele)

Merci

Psykos 7® - http://Psykos7.free.fr
0
Utilisateur anonyme
13 avril 2006 à 21:44
Bon, je ne suis plus trop spécialiste du VB6, pour moi c'est plutot le .net

Pour le vb6, avec mes souvenirs:
Je sais pas si c'est le meilleur moyen, mais ca marche un peu près.
Il faut une picturebox (PicImg), tu lui met la dimenssion que tu veut (ici 16px/16px).
Tu appelle ensuite la fonction GetImage avec en paramètre le texte, elle te retourne alors le texte sous forme d'image.

Private Sub Form_Load()
PicImg.ScaleMode = 3
PicImg.AutoRedraw = True
PicImg.Visible = False
Set Me.Picture = GetImage("15%")
End Sub


Private Function GetImage(ByVal Text As String) As StdPicture
PicImg.Cls
PicImg.CurrentX = (PicImg.ScaleWidth - PicImg.TextWidth(Text)) / 2
PicImg.CurrentY = (PicImg.ScaleHeight - PicImg.TextHeight(Text)) / 2
PicImg.Print Text
Set GetImage = PicImg.Image
End Function

Kenji

<HR width="100%" SIZE=2>



Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
Psykos7 Messages postés 60 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 21 février 2008
13 avril 2006 à 22:03
Merci pour ce code...

Par contre je n'arrive pas a faire passer l'image dans les parametres de la procedure qui appelle "Shell_NotifyIconA" : aucun message d'erreur, pas d'icone..
que ce soit en passant le "Me.picture" dans le parametres d'icone, ou en mettant directement "PicImg.Image" ou meme GetImage("15%")

Une idée ?

Merci pour tout

Psykos 7® - http://Psykos7.free.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
13 avril 2006 à 22:11
Peux-tu mettre ton code du Shell_NotifyIconA stp ? (le comment tu affiche l'icône dans le systray)
Ou dois tu passer en paramètre l'image ? Ce n'est peut être pas du même type.

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
Psykos7 Messages postés 60 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 21 février 2008
13 avril 2006 à 22:17
Alors voici mon code :

Module :
Type NotifyIcondata
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
uCallbackMessage As Long
hicon As Long
sztip As String * 64
End Type


Global nd As NotifyIcondata
Global Const NIM_AJOUTE = 0
Global Const NIM_SUPPRIME = 2
Global Const NIM_MODIFIER = 1
Global Const NIF_MESSAGE = 1
Global Const NIF_ICONE = 2
Global Const NIF_TIP = 4
Global Const WM_MOUSEMOVE = &H200
Global Const WM_LBUTTONUP = &H202
Global Const WM_RBUTTONUP = &H205


Declare Function Shell_NotifyIconA Lib "Shell32" (ByVal dwMessage As Long, lpData _
As NotifyIcondata) As Integer


Sub IcnProc(FRM As Form, What, Optional Icn, Optional Mess)
Dim lResultat As Integer
nd.cbSize = Len(nd)
nd.hwnd = FRM.hwnd
nd.uCallbackMessage = WM_MOUSEMOVE
nd.hicon = Icn
nd.uFlags = NIF_ICONE Or NIF_MESSAGE Or NIF_TIP
nd.sztip = Mess & Chr$(0)
lResultat = Shell_NotifyIconA(What, nd)
End Sub

------------------------------
Form:
Private Sub Command1_Click()
PicImg.ScaleMode = 3
PicImg.AutoRedraw = True
PicImg.BackColor = vbGreen
GetImage Text1.Text
IcnProc Me, 0, PicImg.Image, "Test"
End Sub


Private Function GetImage(ByVal Text As String) As StdPicture
PicImg.Cls
PicImg.CurrentX = 0
PicImg.CurrentY = 0
PicImg.Print Text
Set GetImage = PicImg.Image
End Function

-----------------------------
j'ai remarqué que si j'ajoute le "Picture" du PictureBox, un vide se creer dans le systray, mais toujours pas de fond vert avec le texte

Sinon pour resumé, je saisi un chiffre dans un textbox, et ca me remplit le picture avec le fond vert... mais c'est tout

Merci pour ton aide

Psykos 7® - http://Psykos7.free.fr
0
Utilisateur anonyme
13 avril 2006 à 22:43
Je coirs avoir trouvé.
Il lui faut un icône et non un bitmap. D'ou l'erreur. Avec une icône ca marche.
Mais la je sais pas comment on peut crée un icône facilement.

Haaah, vive le .net

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 avril 2006 à 13:01
salut Psykos7, salut Kenji ;)





j'ai cru voir une source récemment pour la création rapide d'image ICO.


[../codes/CREATION-FICHIER-ICO-DEPUIS-FICHIER-BMP-32X32-PIXELS_36967.aspx ici] ? pas testé.





sinon je suis sur une source de ce genre, mais je n'ai pas terminé (manque cruel de temps).


++


PCPT [AFCK]
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 avril 2006 à 13:05
tu as cette source :
http://www.vbfrance.com/codes/BMP-TO-ICO-OU-COMMENT-CREER-ICONES-DYNAMIQUEMENT_34165.aspx

qui te propose également la création dynamique d'icones....

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
Psykos7 Messages postés 60 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 21 février 2008
14 avril 2006 à 20:33
Un grand merci aux admins.


Je me vais de ce pas tester vos 2 sources proposées





signé un fan de vos CS

Psykos 7® - http://Psykos7.free.fr
0
Psykos7 Messages postés 60 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 21 février 2008
14 avril 2006 à 21:57
Me revoila de nouveau :)

Alors j'ai essayé le programme de Renfield. Je n'ai pas testé le passage de l'icone créée dans le systray mais d'abord d'ecrire sur l'image en haut a gauche et ensuite lancer une conversion en icone.

Mon soucis est que l'icone ressort entierement en noir
Explications :

Dans le code, j'ai crée un bouton quelconque et mis ce code :
CcPicSource.Cls
CcPicSource.ScaleMode = vbPixels
CcPicSource.Picture = LoadPicture("")
CcPicSource.BackColor = vbGreen
CcPicTransparent.BackColor = vbBlack 'CcPicSource.Point(0, 0)
TextOut CcPicSource.hdc, 0, 0, "15", 2
CcPicSource.Refresh

et ensuite j'appuie sur le bouton de conversion et la... images generées...noires
que ce soit en utilisant la commande Print ou TextOut ca ne marche pas

Sauriez-vous (connaissant le niveau de vos codes je suis sur que oui) comment appliquer ce texte pour pouvoir utiliser la conversion en icone par la suite ?

j'avais testé un truc tout bête : set picture1.picture = CcPicSource.Picture
mais la c'est pire, picture1 est blanc lol...

Psykos 7® - http://Psykos7.free.fr
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 avril 2006 à 08:24
tu peux faire :



Private Sub Command1_Click()

CcPicSource.Cls

CcPicSource.Picture = Nothing

CcPicSource.BackColor = vbGreen

CcPicTransparent.BackColor = vbBlack 'CcPicSource.Point(0, 0)

TextOut CcPicSource.hdc, 0, 0, "15", 2

Set CcPicSource.Picture = CcPicSource.Image

End Sub

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
Rejoignez-nous