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 :

[VB6] API CreatePen > faut'il supprimer l'ancien pen ?


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut [VB6] API CreatePen > faut'il supprimer l'ancien pen ?
    Bonjour,
    J'ai besoin d'utiliser l'API pour dessiner un trait,
    j'utilise doc MoveToEx et LineTo pour faire mon trait.
    Pour changer de crayon, il faut que je crée un "Pen".

    J'ai recherché un peu de donc, a propos de la fonction CreatePen
    Mais j'ai un probleme de comprehension :
    pourquoi dans les quelques docs/exemple que je trouve les gens effacent'ils l'ancien pen des qu'ils en crée un nouveau ?
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     hPen= CreatePen(....)
    DeleteObject SelectObject(me.hdc,hPen) <- suppr ancien pen
    MoveToEx(...)
    LineTo(...)
    DeleteObject hPen <- suppr le nouveau pen (plus besoin)
    Voilà, ca a l'air pas mal, mais je me demande pourquoi au lieu de supprimer l'ancien on ne le réselectionnerait pas a la fin (pour tout laisser dans l'etat ou c'etait avant) ?

    exemple avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectObject(me.hdc, hAncienPen)
    Parceque la je ne comprends pas : avant d'arriver dans ce bout de code, on a un pen (l'ancien) et apres, il est supprimé ? (en gros, on fait UNE creation pour DEUX suppression) et si plus loin dans le code on veux le supprimer ce fameux ancien pen ?
    donc voilà ma question.
    Par exemple pour les font, je reselectione l'ancienne font une fois que j'ai fait ce que j'avais a faire avec une fonte differente ? ca ne marche pas pareil ?

    Merci de votre aide.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    pen est considéré comme un objet !
    si l'on ne veut aucune "rémanence" (et occupation indûe de la mémoire) il faut systématiquement détruire les objets ainsi créés (y compris les fonts). Kif-Kif pour ce que l'on met dans un clipboard !
    Ce n'est pas obligatoire mais fortement conseillé !

  3. #3
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    ok, merci.
    mais dans ce cas precit, l'ancien pen, c'est pas moi qui l'ai crée, pourquoi faudrait'il que je le supprime ?

    Voilà ce que j'ai pondu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        hPen = CreatePen(PS_SOLID, 1, color)
          hPenOld = SelectObject(DC, hPen)
          MoveToEx DC, x1 + 7, ym, tJ
          LineTo DC, x1 + 3, ym - 4  ' \
          LineTo DC, x1 + 3, ym + 4  ' |
          LineTo DC, x1 + 7, ym      ' /
          SelectObject DC, hPenOld
          DeleteObject hPen
    a la sortie de ce bout de code, le systeme se retrouve exactement dans le même etat qu'avant (il avait un pen de selectionné, apres mon code il a toujours le même pen : je ne l'ai pas supprimé).
    je n'oublie pas de supprimer mon objet temporaire (hPen) par contre.

    est-ce que ca vous semble coherent ?

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Il ne peut y avoir 2 "pen" à la fois !
    Il te faut donc "zigouiller" l'autre avant de définir le tien, quitte à rétablir l'autre ensuite (celà va de soi)

Discussions similaires

  1. [vb6] api capCreateCaptureWindow
    Par france38 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/07/2006, 12h04
  2. [VB6] [API] Type correspondant à DWORDLONG
    Par Catbull dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/11/2004, 15h18
  3. [VB6+API][Impression] Mise en page
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 06/09/2004, 17h11
  4. [VB6] Api pour supprimer dans un fichier INI
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/02/2003, 08h16

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