Equivalent IPictureDisp pour les Icons ICO ?

Résolu
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007 - 11 nov. 2006 à 23:38
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007 - 12 nov. 2006 à 11:55
Bonsoir, j'ai beau cherché je trouve pas alors je viens m'adresser a vous. Dans un UserControl j'ai besoin d'ajouter une propriété icon tout comme celle des Forms (MouseIcon ou Icon, ...) seulement voila ... je connais IPictureDisp pour les images mais le filtre pointe sur les images utilisable par vb6 sois gif, bmp, ... et j'aimerais plutot avoir des ico...

Bref bref je voulais savoir s'il y'avais déjà un type que je pourrais utilisé ou s'il va falloir que je me créer moi même ma propre feuille ?

Merci d'avance.

20 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2006 à 11:08
oui j'ai vu, et voici comment faire :
en remplaçant let par set....
(donc en code-form à pré-appeler par set)

là çà marche
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2006 à 11:47
dans le UC :

Option Explicit
Private Const DI_NORMAL =  &H3
Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As
Long
Private M_oIcoPicture As StdPicture
'
'
Public Property Get myTB_Ico_Picture() As StdPicture
    Set myTB_Ico_Picture = M_oIcoPicture
End Property
Public Property  Set
 myTB_Ico_Picture(ByRef P_oValue As StdPicture)
    Set M_oIcoPicture  = P_oValue
    UserControl.PropertyChanged "myTB_Ico_Picture"
    UserControl_Refresh
End Property
'
Private Sub UserControl_Initialize()
    picIcon.AutoRedraw =  True
End Sub
'
Private Sub UserControl_Refresh() ' C'est une
fonction que j'appelle pas un evenement
    If (Not M_oIcoPicture Is Nothing) Then
        PB_DrawIcon picIcon, M_oIcoPicture, 24, 24
    Else
        PB_DrawIcon picIcon, LoadResPicture(101, vbResIcon), 24, 24
    End If
End Sub
'
'
Public Sub PB_DrawIcon(ByRef P_oPictureBox As PictureBox, ByRef P_oPictureDisp As IPictureDisp, ByVal P_sWidth As Single, ByVal P_sHeight As Single)
    Call DrawIconEx(P_oPictureBox.hdc, 0, 0, P_oPictureDisp.Handle, P_sWidth,
P_sHeight, 0, 0, DI_NORMAL)
End Sub

<small>Coloration
syntaxique automatique [AFCK] </small>
       

sur la Form, par les propriétés en édition, c'est ok.

par le code il faut appeler :

Private Sub Form_Load()
    Set 
UserControl11.myTB_Ico_Picture  = LoadPicture("C:\ico.ico")
End Sub

<small>Coloration
syntaxique automatique [AFCK]</small>
       

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2006 à 11:55
vbPicTypeNone 0 Image vide
vbPicTypeBitmap 1 Image bitmap (fichiers .bmp)
vbPicTypeMetafile 2 Métafichier (fichiers .wmf)
vbPicTypeIcon 3 Icône (fichiers .ico)
vbPicTypeEMetafile 4 Métafichier étendu (fichiers .emf)

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
12 nov. 2006 à 00:31
Bonsoir,
Que les "pros" m'arrêtent si je me trompe, mais un icone n'est jamais qu'un bmp dont on a remplacé l'extension par .ico , non ?

Jcbé[^]

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2006 à 01:53
tu te trompes ^^
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2006 à 01:55
threadom
-> IPictureDisp, Picture, stdpicture, etc....
ta question n'est pas clair, IPictureDisp devrait fonctionner tout de même

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
12 nov. 2006 à 07:23
TMONOD : oui et non : les données d'une icône a la même structure que celles d'une bitmap, mais l'en-tête est différent : renomme un bmp 24 bits en .ico, et essaye de l'affecter en icone de form VB, tu va voir ce qu'il va te dire ;)
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 09:59
Bonjour :) Aie Aie Aie effectivement j'ai pas du être clair ...

Quand on fait un Controle Utilisateur on peut y associer des propriétés que l'on peut remplir en utilisant la propriété dans le code, ou en passant par la fenêtre de propriété de VB6.

Quand je met le type IPictureDisp pour mon icon la fenetre qui est proposé par VB6 quand on clique dans les propriétées pour changer l'icon permet de trouvé un bmp, un gif, ect. Seulement j'ai besoin que cette fenetre ai un filtre tel que *.ico

J'ai vu en passant par la fenetre de propriété d'une form pour changer l'icon de celle ci, qu'il existe surement déjà un type permettant d'acceder a une fenetre de fichier avec le filtre *.ico.

Ma question etais et est toujours de savoir quel type mettre pour obtenir le la boite de dialog de fichier avec le filtre *.ico ?
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 10:13
Ha et pour IPictureDisp et Picture j'ai déjà esssayer et quand on selectionne un *.ico j'ai un joli message qui me dit : "microsoft visual basic : image incorrecte"

Je vais essayé avec le StdPicture mais je ne m'attend pas a un miracle vu que celui aussi filtre sur du bmp et du dib
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 10:15
tadammm stdpicture donne la même chose ... on peu selectionné l'icon mais image inccorecte
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 10:26
Ha deux seconde :) ptet que mes icons sont pourris finalement :D mais bon ca n'empeche que j'aimerais avoir un icon dialog plutot qu'une bitmap dialog (meme si c'est bien un icon au final)
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 10:29
Avec un icon correct j'ai "nombre d'arguments incorrect ou affectation de la propriété incorrecte" ...
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2006 à 10:32
pour çà, va nous falloir voir ton code.
pour un icon dialog, à par en le faisant toi même, j'ai un doute
en tout cas, msdn muette à ce sujet

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 10:43
j'ai bien microsoft ils mettent dans leur environement et dans leur propres ocx des controles non disponible pour les autres ... doh

Niveau du code c'est assez simple mais je te donne ca tout de suite après quelques copier coller

Private M_oIcoPicture As StdPicture

Public Property Get myTB_Ico_Picture() As StdPicture
    Set myTB_Ico_Picture = M_oIcoPicture
End Property

Public Property Let myTB_Ico_Picture(ByRef P_oValue As StdPicture)
    Set M_oIcoPicture = P_oValue
    UserControl.PropertyChanged "myTB_Ico_Picture"
    UserControl_Refresh
End Property

'  C'est une fonction que j'appelle pas un evenement
Private Sub UserControl_Refresh()
    If (Not M_oIcoPicture Is Nothing) Then

        PB_DrawIcon picIcon, M_oIcoPicture, 24, 24
    Else

        PB_DrawIcon picIcon, LoadResPicture(101, vbResIcon), 24, 24
    End If
End Sub

Public Sub PB_DrawIcon(ByRef P_oPictureBox As PictureBox, ByRef P_oPictureDisp As IPictureDisp, ByVal P_sWidth As Single, ByVal P_sHeight As Single)
    Call DrawIconEx(P_oPictureBox.hdc, 0, 0, P_oPictureDisp.Handle, P_sWidth, P_sHeight, 0, 0, DI_NORMAL)
End Sub

 heu ca marche ca ? 
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2006 à 10:58
nombre de param invalide...

tu es sûr que ta déclaration de drawiconex est ok?

Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long

(et non, pas de balise [code])
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 11:01
Bein heu oui ma déclaration est valide car avec les LoadResPicture ca passe très bien ... je vais essayer de voir en lui balancant un icon autrement mais bon aucun doute elle est bonne.

Mais j'ai mis des breakpoints au debut de chaque fonction et lors du changement de la propiété ca rentre meme pas dans le Let ...
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 11:30
pas trop bien compris mdr :) mais bon je vais déjà remplacé je vais voir ou ca mène.
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 11:42
Haaa ca marche :) ouai bon bein heu ... c'est pas la solution idéal et je me pencherais sur l'histoire du filtre *.ico quand je pourrais mais bon ... quoi que atta :D en faite c'est ptet plus grave que ce soit un ico :D

Au passage tu sais pas comment je pourrais différencier le fait que ce soit un ICO ou un BMP ?
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 11:45
ok :) IPictureDisp.type
bitmap = 1
? = 2
icon = 3

:) merci allez hop je valid la reponse c'est pas la solution voulu mais elle est encore mieux.
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
12 nov. 2006 à 11:55
Ouai merci :) on a exactement la même maintenant je vais chercher une method qui permet de dessiner mon image bmp avec de la transparence comme le fais drawiconex .... bitblt le fait si je me souvient bien ... faut que je reregarde MERCI :D
Rejoignez-nous