Psykos7
Messages postés60Date d'inscriptiondimanche 15 octobre 2000StatutMembreDernière intervention21 février 2008
-
13 avril 2006 à 21:20
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 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 ?
Psykos7
Messages postés60Date d'inscriptiondimanche 15 octobre 2000StatutMembreDernière intervention21 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)
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.
Psykos7
Messages postés60Date d'inscriptiondimanche 15 octobre 2000StatutMembreDernière intervention21 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%")
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.
Psykos7
Messages postés60Date d'inscriptiondimanche 15 octobre 2000StatutMembreDernière intervention21 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
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.
Psykos7
Messages postés60Date d'inscriptiondimanche 15 octobre 2000StatutMembreDernière intervention21 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...