Equivalent IPictureDisp pour les Icons ICO ?

Résolu
Signaler
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007
-
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007
-
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.
A voir également:

20 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
256
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
6 novembre 2009
1
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é[^]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
tu te trompes ^^
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
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 ;)
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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 ?
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

tadammm stdpicture donne la même chose ... on peu selectionné l'icon mais image inccorecte
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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)
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

Avec un icon correct j'ai "nombre d'arguments incorrect ou affectation de la propriété incorrecte" ...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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 ? 
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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 ...
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

pas trop bien compris mdr :) mais bon je vais déjà remplacé je vais voir ou ca mène.
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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 ?
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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.
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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