Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1479 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] comment connaitre la largeur d'un HPEN ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] comment connaitre la largeur d'un HPEN ?

n°435691
camarchepo​a
m'enfin !
Posté le 22-06-2003 à 16:03:15  profilanswer
 

bonjour !
 
voilà mon probleme :
 
je crée un HPEN comme ca :
currPen=CreatePen(PS_SOLID, 5, RGB(0, 0, 0));
 
maintenant je voudrai connaitre sa largeur, càd le deuxième parametre qui vaut 5 ici...
 
mais comment faire cela ?
et pour la couleur ?
 
ca doit pas etre bien compliqué mais je trouve pas  :??:  
 
merci  :jap: !

mood
Publicité
Posté le 22-06-2003 à 16:03:15  profilanswer
 

n°435700
Konar
Posté le 22-06-2003 à 16:08:47  profilanswer
 

http://msdn.microsoft.com/library/ [...] s_912s.asp
 

Code :
  1. LOGPEN logpen;
  2. GetObject(hPen, sizeof (LOGPEN), &logpen);


 
edit : ce topic appartient a la catégorie 'C' mais bon on va pas chipoter... de toute facon c'est pas une bonne idée de séparer les 2


Message édité par Konar le 22-06-2003 à 16:16:14
n°435706
camarchepo​a
m'enfin !
Posté le 22-06-2003 à 16:23:12  profilanswer
 

Konar a écrit :

http://msdn.microsoft.com/library/ [...] s_912s.asp
 

Code :
  1. LOGPEN logpen;
  2. GetObject(hPen, sizeof (LOGPEN), &logpen);


 
edit : ce topic appartient a la catégorie 'C' mais bon on va pas chipoter... de toute facon c'est pas une bonne idée de séparer les 2


 
 
euh ... je suis désolé mais g peur de ne pas comprendre  :sweat:  
 
je vois pas ou tu peut retrouver la largeur ...
tu pourrai, si possible m'expliquer un peu plus ?
 
merci !

n°435707
Konar
Posté le 22-06-2003 à 16:25:25  profilanswer
 

Code :
  1. LOGPEN logpen;
  2. GetObject(hPen, sizeof (LOGPEN), &logpen);
  3. logpen.lopnColor; // Color RGB
  4. logpen.lopnStyle; // Style
  5. logpen.lopnWidth.x; // Width


Message édité par Konar le 22-06-2003 à 16:27:52
n°435709
camarchepo​a
m'enfin !
Posté le 22-06-2003 à 16:29:10  profilanswer
 

ca c ok.
 
donc ce qui serrai interessant c "logpen.lopnWidth; "
 
mais c'est une structure POINT.
 

Code :
  1. typedef struct tagPOINT {
  2.   LONG x;
  3.   LONG y;
  4. } POINT, *PPOINT;


 
et là je vois pas ou on trouve la largeur  :??:  
 
 
(en tout cas tu es rapide pour répondre !!!)

n°435710
Konar
Posté le 22-06-2003 à 16:34:45  profilanswer
 

la largeur se trouve ds le membre x de la struct POINT, le membre y sert apparemment a rien...

n°435714
camarchepo​a
m'enfin !
Posté le 22-06-2003 à 16:39:44  profilanswer
 

ah bon  :pt1cable:  
 
alors ca doit être bon !
faut que je règle juste un autre probleme ( :fou: à mort les pointeurs NULL :fou: ) et ca devrai le faire !
 
merci pour ton aide !!


Message édité par camarchepoa le 22-06-2003 à 16:47:32
n°435923
camarchepo​a
m'enfin !
Posté le 22-06-2003 à 20:35:00  profilanswer
 

bah en fait g l'impression que c pas ca du tout  :cry:  
 
voilà ce que me donne les Watch :
 

Code :
  1. - logpen {...}
  2. lopnStyle 3435973836
  3. - lopnWidth {x=-858993460 y=-858993460}
  4. x -858993460
  5. y -858993460
  6. lopnColor 3435973836


 
apparement x et y ne correspondent à rien ....

n°435985
Konar
Posté le 22-06-2003 à 22:09:09  profilanswer
 

chez moi ce bout de code marche nickel :

Code :
  1. HPEN hPen = CreatePen(PS_SOLID, 3, RGB(251, 54, 67));
  2. if (!hPen)
  3. return MessageBox(0, "error creating pen", "", 0);
  4. LOGPEN Pen;
  5. if (!GetObject(hPen, sizeof (LOGPEN), &Pen))
  6. return MessageBox(0, "error GetObject", "", 0);
  7. stringT str;
  8. str.Format("style(%d) width(%d) color(%d %d %d)", Pen.lopnStyle, Pen.lopnWidth.x, GetRValue(Pen.lopnColor), GetGValue(Pen.lopnColor), GetBValue(Pen.lopnColor));
  9. MessageBox(0, str.c_str(), "pen",  0);


 
teste la valeur de retour de CreatePen et GetObject, ou file ton code s'il est pas trop long

n°436013
camarchepo​a
m'enfin !
Posté le 22-06-2003 à 22:31:50  profilanswer
 

Konar a écrit :

chez moi ce bout de code marche nickel :

Code :
  1. HPEN hPen = CreatePen(PS_SOLID, 3, RGB(251, 54, 67));
  2. if (!hPen)
  3. return MessageBox(0, "error creating pen", "", 0);
  4. LOGPEN Pen;
  5. if (!GetObject(hPen, sizeof (LOGPEN), &Pen))
  6. return MessageBox(0, "error GetObject", "", 0);
  7. stringT str;
  8. str.Format("style(%d) width(%d) color(%d %d %d)", Pen.lopnStyle, Pen.lopnWidth.x, GetRValue(Pen.lopnColor), GetGValue(Pen.lopnColor), GetBValue(Pen.lopnColor));
  9. MessageBox(0, str.c_str(), "pen",  0);


 
teste la valeur de retour de CreatePen et GetObject, ou file ton code s'il est pas trop long


 
 
en fait tu as raison ca marche bien, mon probleme viens d'ailleurs : je perds la valeur du pointeur mais cela semble alléatoire  :??:  
 
et puis ca commence à être un peu compliqué !
 
en tout cas merci beaucoup !
désolé de t'avoir fait bosser un dimanche ;)

mood
Publicité
Posté le 22-06-2003 à 22:31:50  profilanswer
 

n°436063
camarchepo​a
m'enfin !
Posté le 22-06-2003 à 23:49:39  profilanswer
 

si jamais qq cherche, voilà pour changer la taille :
 

Code :
  1. LOGPEN logpen;
  2. GetObject(currPen, sizeof (LOGPEN), &logpen);
  3. // Change la taille
  4. logpen.lopnWidth.x = logpen.lopnWidth.x+5;
  5. currPen=CreatePen( logpen.lopnStyle, logpen.lopnWidth.x, logpen.lopnColor );


 
le HPEN de départ s'appelle "currPen"
 
c cool :)

n°436074
Konar
Posté le 23-06-2003 à 00:18:31  profilanswer
 

CaMarchePoa a écrit :

si jamais qq cherche, voilà pour changer la taille :
 

Code :
  1. LOGPEN logpen;
  2. GetObject(currPen, sizeof (LOGPEN), &logpen);
  3. // Change la taille
  4. logpen.lopnWidth.x = logpen.lopnWidth.x+5;
  5. currPen=CreatePen( logpen.lopnStyle, logpen.lopnWidth.x, logpen.lopnColor );


 
le HPEN de départ s'appelle "currPen"
 
c cool :)


 
sans vouloir faire tout un roman win32 sur les objets gdi, en faisant ca tu ne 'changes' pas la width de ton pen mais tu en créés un autre, diffèrent de ton 1er pen. tu peux garder ce code la, mais il faut un appel à DeleteObject avant la nouvelle affectation de currPen pour effacer le 1er pen, sinon tu as perte d'1 objet gdi et de la ram qui va avec.

n°437420
camarchepo​a
m'enfin !
Posté le 23-06-2003 à 21:35:32  profilanswer
 

exact !
 
comment quoi il faut faire attention en faisait des copier coller, j'ai retiré une ligne de trop  :ange:  
 
 
en tout cas ca le fait :)
 
 
il y a pas une fonction ModifyPen ou un truc comme ca ?
ca serrai mieux ... enfin sinon ca marche  :bounce:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] comment connaitre la largeur d'un HPEN ?

 

Sujets relatifs
[HTML] Cellule de tableau qui utilise la largeur restante[PHP] Connaître le nom du mois suivant à partir d'un timestamp...
Hauteur et largeur d'une imahe en PHP ...[C] Socket UDP connaitre le port source ???
probleme de largeur tableau avec un texte long[HTML/JS] Largeur d'un scrollbar
[perl] Connaitre le nombre d'élément dans un array[java]Connaitre le nombre d'instance créées d'une même classe?
[perl] Connaitre la taille d'un répertoire, comment ?Connaitre le checksum (numero de serie?) d'un CD
Plus de sujets relatifs à : [C/C++] comment connaitre la largeur d'un HPEN ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR