IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

API GetBitmapDimensionEx retourne des zéros


Sujet :

VB 6 et antérieur

  1. #1
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut API GetBitmapDimensionEx retourne des zéros
    Salut

    Voici le tout ptit programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Declare Function GetBitmapDimensionEx Lib "gdi32" ( _
                             ByVal hBitmap As Long, _
                             lpDimension As Size) As Long
     
    Private Type Size
            cx As Long
            cy As Long
    End Type
     
    Private Sub cmdParcourir_Click()
    '    Dim liResultat As Long
        Dim laSize As Size, laPic As Picture
        With dlgOuvrir
            .DialogTitle = "Ouvrir un bitmap"
            .Filter = "Bitmap (.bmp)|*.bmp;*.BMP"
            .InitDir = "D:\DEC_Info\2006 Hi\420-407 POO"
            .ShowOpen
            txtFichier.Text = .FileName
            Set laPic = LoadPicture(.FileName)
            If .FileName <> "" Then
                picImage.Picture = LoadPicture(.FileName)
    '            liResultat = GetBitmapDimensionEx(laPic.Handle, laSize)
                GetBitmapDimensionEx(laPic.Handle, laSize)
                txtLarg.Text = laSize.cx
                txtHaut.Text = CStr(laSize.cy)
            End If
        End With
    End Sub
    Et mes textBox txtLarg et txtHaut affichent des zéros.

    J'ai cherché chez DocVB et MSDN et sur Développez, bien sur, mais je n'ai rien trouvé pour faire mon bonheur.

    J'ai même essayé avec ou sans valeur de retour. Que dale!

    Avez-vous une idée de l'origine du problème? Ce doit être un code d'erreur numéro 18 (18 pouces devant l'écran! ), mais comme mes recherches sont infructueuses...

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Ne te vexes pas zazaraignée , je me doute que tu connais cette possibilité, mais cela peut servir aux personnes qui passeront par là.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Option Explicit
    Dim Largeur As Integer
    Dim Hauteur As Integer
    Dim Dimensions As String
     
    Private Sub Form_Load()
    'InformationsFichier "C:\PersoFrancis", "FondEcran.bmp"
    InformationsFichier "C:\PersoFrancis", "MoiBoiteMenuShell.JPG"
    MsgBox Dimensions & vbCrLf & "Hauteur " & Hauteur & "    Largeur" & Largeur
    End Sub
     
    Public Sub InformationsFichier(Chemin As String, Fichier As String)
    'necessite d'activer reference Microsoft Shell Controls and Automation
    Dim objShell As Shell
    Dim objFolder As Folder
    Dim strFileName As FolderItem
     
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(Chemin) 'adapter le chemin
    Set strFileName = objFolder.Items.Item(Fichier) 'adapter le fichier
    If objFolder.GetDetailsOf(strFileName, 26) <> "" Then
     Dimensions = Trim$(objFolder.GetDetailsOf(strFileName, 26))
    End If
    If objFolder.GetDetailsOf(strFileName, 27) <> "" Then
     Largeur = Val(Trim(objFolder.GetDetailsOf(strFileName, 27)))
    End If
    If objFolder.GetDetailsOf(strFileName, 28) <> "" Then
     Hauteur = Val(Trim(objFolder.GetDetailsOf(strFileName, 28)))
    End If
     
    Set objShell = Nothing: Set objFolder = Nothing: Set strFileName = Nothing
     
    End Sub
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Non, je ne connaissais pas...

    Je teste et je dis si ça correspond à ce que je cherches.

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    J'ai essayé ton code. Ça marche! Merci!

    À ceci près, ne pas oublier d'ajouter en référence Microsoft Shell Controls and Automation.

  5. #5
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Sinon on peut passer par l'objet StdPicture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub cmdParcourir_Click()
        Dim  laPic As Picture ' Similaire à Dim  laPic As StdPicture
        With dlgOuvrir
            .DialogTitle = "Ouvrir un bitmap"
            .Filter = "Bitmap (.bmp)|*.bmp;*.BMP"
            .InitDir = "D:\DEC_Info\2006 Hi\420-407 POO"
            .ShowOpen
            txtFichier.Text = .FileName
            Set laPic = LoadPicture(.FileName)
            If .FileName <> "" Then
                picImage.Picture = LoadPicture(.FileName)
                txtLarg.Text = ScaleX(laPic.Width,VbHimetrics,VbPixels)
                txtHaut.Text = ScaleY(laPic.Height,VbHimetrics,VbPixels)
            End If
        End With
    End Sub

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Oui, je connaissais. Mais le but de l'exercice étant de passer par un autre chemin qu'un objet Picture. J'avais trouvé l'API sus mentionné. Mais apparemment, elle ne marche pas aussi intuitivement que je l'aurais cru.

    Merci à vous deux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/04/2006, 11h41
  2. Réponses: 2
    Dernier message: 20/01/2006, 17h08
  3. [linux] mettre des zéros devant un nombre
    Par le mage tophinus dans le forum C
    Réponses: 15
    Dernier message: 04/10/2005, 08h26
  4. [SWT] Api pour faire des graph ?
    Par bawan dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 05/09/2005, 13h13
  5. [Manip de fichiers] Fonction retournant des infos
    Par sans_atouts dans le forum C
    Réponses: 3
    Dernier message: 24/07/2002, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo