begin process at 2012 05 28 22:43:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

conteneur CList dans aplication du type paint


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

conteneur CList dans aplication du type paint

mardi 22 juin 2004 à 17:20:46 | conteneur CList dans aplication du type paint

andarius40

bonjour,

j'apprends le c++ avec le livre visual c++ 6 de ivor horton.
(J'en suis au chapitre 6 pour ceux qui ont le livre)

Lorsque je compile le programme j'ai des erreurs. Les voicis

Compiling...
Elements.cpp
e:\c++\chapitre16\exemple\sketcher\elements.h(82) : error C2143: syntax error : missing ';' before '<'
e:\c++\chapitre16\exemple\sketcher\elements.h(82) : error C2501: 'CList' : missing storage-class or type specifiers
e:\c++\chapitre16\exemple\sketcher\elements.h(82) : error C2059: syntax error : '<'
e:\c++\chapitre16\exemple\sketcher\elements.h(82) : error C2238: unexpected token(s) preceding ';'
E:\C++\Chapitre16\Exemple\Sketcher\Elements.cpp(135) : error C2065: 'm_PointList' : undeclared identifier
E:\C++\Chapitre16\Exemple\Sketcher\Elements.cpp(135) : error C2228: left of '.AddTail' must have class/struct/union type
E:\C++\Chapitre16\Exemple\Sketcher\Elements.cpp(136) : error C2228: left of '.AddTail' must have class/struct/union type
E:\C++\Chapitre16\Exemple\Sketcher\Elements.cpp(147) : error C2228: left of '.AddTail' must have class/struct/union type
E:\C++\Chapitre16\Exemple\Sketcher\Elements.cpp(172) : error C2228: left of '.GetHeadPosition' must have class/struct/union type
E:\C++\Chapitre16\Exemple\Sketcher\Elements.cpp(176) : error C2228: left of '.GetNext' must have class/struct/union type
E:\C++\Chapitre16\Exemple\Sketcher\Elements.cpp(180) : error C2228: left of '.GetNext' must have class/struct/union type
SketcherView.cpp
e:\c++\chapitre16\exemple\sketcher\elements.h(82) : error C2143: syntax error : missing ';' before '<'
e:\c++\chapitre16\exemple\sketcher\elements.h(82) : error C2501: 'CList' : missing storage-class or type specifiers
e:\c++\chapitre16\exemple\sketcher\elements.h(82) : error C2059: syntax error : '<'
e:\c++\chapitre16\exemple\sketcher\elements.h(82) : error C2238: unexpected token(s) preceding ';'
Generating Code...
Error executing cl.exe.

Sketcher.exe - 15 error(s), 0 warning(s)


et je vous donnes les fichiers dans les quels il y a des erreurs.

elements.h

#if !defined(Elements_h) #define Elements_h // Classe d'éléments générique class CElement : public CObject { protected: COLORREF m_Color; // Couleur d'un élément CRect m_EnclosingRect; // Rectangle englobant un élément int m_Pen; // Epaisseur de la plume public: virtual ~CElement(){} // Destructeur virtuel // Opération de dessin virtuelle virtual void Draw(CDC* pDC) const {} // Opération de dessin virtuelle CRect GetBoundRect() const; // Obtient le rectangle englobant d'un élément protected: CElement(){} //Constructeur par défaut }; // Classe définissant un objet ligne class CLine : public CElement { public: virtual void Draw(CDC* pDC) const; // Fonction affichant une ligne // Constructeur pour un objet ligne CLine(const CPoint& Start, const CPoint& End, const COLORREF& Color, const int& PenWidth); protected: CPoint m_StartPoint; // Première extrémité de la ligne CPoint m_EndPoint; // Seconde extrémité de la ligne CLine(){} // Constructeur par défaut - à ne pas utiliser }; // Classe définissant un objet rectangle class CRectangle : public CElement { public: virtual void Draw(CDC* pDC) const; // Fonction affichant une ligne // Constructeur pour un objet rectangle CRectangle(const CPoint& Start, const CPoint& End, const COLORREF& Color, const int& PenWidth); protected: CRectangle(){} // Constructeur par défaut - à ne pas utiliser }; // Classe définissant un objet cercle class CCircle : public CElement { public: virtual void Draw(CDC* pDC) const; // Fonction affichant une ligne // Constructeur pour un objet cercle CCircle(const CPoint& Start, const CPoint& End, const COLORREF& Color, const int& PenWidth); protected: CCircle(){} // Constructeur par défaut - à ne pas utiliser }; // Classe définissant un objet courbe class CCurve : public CElement { public: virtual void Draw(CDC* pDC) const; // Fonction affichant une ligne // Constructeur pour un objet courbe CCurve(const CPoint& FirstPoint, const CPoint& SecondPoint, const COLORREF& Color); void AddSegment(const CPoint& Point); // Ajoute un segment à la courbe protected: // Inserer les membres données CCurve ici CList<CPoint, const CPoint&> m_PointList; // Liste de points Type safe CCurve(){} // Constructeur par défaut - à ne pas utiliser }; #endif // !Defined(Elements_h)

elements.cpp

// Mise en oeuvre des classes d'éléments
#include "stdafx.h"

#include <math.h>
#include "OurConstantes.h"
#include "Elements.h"

// Construteur de la classe CLine
CLine::CLine(const CPoint& Start, const CPoint& End, const COLORREF& Color,const int& PenWidth)
{
m_StartPoint = Start; // Définit la première extrémité de la ligne
m_EndPoint = End; // Définit la seconde extrémité de la ligne
m_Color = Color; // Définit la couleur de la ligne
m_Pen = 1; // Définit l'épaisseur de la plume

// Définit le rectangle délimiteur
m_EnclosingRect = CRect(Start, End);
m_EnclosingRect.NormalizeRect();
}

// Dessine un objet CLine
void CLine::Draw(CDC* pDC) const
{
/* Crée une plume associée à cet objet et
l'initialise avec la couleur de l'objet et l'épaisseur du trait*/
CPen aPen;
if(!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))
{
// Echec de la création de la plume. Abondon du programme
AfxMessageBox("Echec du tracé d'une ligne", MB_OK);
AfxAbort();
}

CPen* pOldPen = pDC->SelectObject(&aPen); // Sélectionne la plume

// Maintenant, dessine la ligne
pDC->MoveTo(m_StartPoint);
pDC->LineTo(m_EndPoint);

pDC->SelectObject(pOldPen); // Restitue l'ancienne plume
}

// Obtient le rectangle englobant d'un élément
CRect CElement::GetBoundRect() const
{
CRect BoundingRect; // Objet qui stocke le rectangle englobant
BoundingRect = m_EnclosingRect; // Y place le rectangle délimiteur

// Augmente le rectangle de l'épaisseur de la plume
int Offset = m_Pen == 0 ? 1 : m_Pen; // L'épaisseur doit être au moins de 1
BoundingRect.InflateRect(Offset, Offset);

return BoundingRect; // Renvoie le rectangle englobant
}

// Constructeur de la classe CRectangle
CRectangle::CRectangle(const CPoint& Start, const CPoint& End, const COLORREF& Color,const int& PenWidth)
{
m_Color = Color; // Définit la couleur du rectangle
m_Pen = PenWidth; // Définit lépaisseur de la plume

// Définit le rectangle délimiteur
m_EnclosingRect = CRect(Start, End);
m_EnclosingRect.NormalizeRect();
}

// Dessine un objet CRectangle
void CRectangle::Draw(CDC* pDC) const
{
// Crée une plume associé à cet objet et l'initialise avec la couleur de l'objet et l'épaisseur du trait
CPen aPen;
if(!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))
{
// Echec de la création de la plume. Abondon du programme
AfxMessageBox("Echec du tracé d'un rectangle", MB_OK);
AfxAbort();
}

CPen* pOldPen = pDC->SelectObject(&aPen); // Sélectionne la plume

CBrush* pOldBrush = static_cast<CBrush*>(pDC->SelectStockObject(NULL_BRUSH)); // Sélectionne un pinceazu vide

// Maintenant, dessine le rectangle
pDC->Rectangle(m_EnclosingRect);

pDC->SelectObject(pOldBrush); // Restitue l'ancien pinceau
pDC->SelectObject(pOldPen); // Restitue l'ancienne plume

}

// Constructeur de la classe CCircle
CCircle::CCircle(const CPoint& Start, const CPoint& End, const COLORREF& Color, const int& PenWidth)
{
/* Calcule d'abord le rayon
Nous utilisons la virgule flottante car elle est requise par
la fonction bibliothèque (dans math.h) calculant une racine carrée*/
long Radius =
static_cast<long>(sqrt(static_cast<double>((End.x-Start.x)*(End.x-Start.x)+
(End.y-Start.y)*(End.y-Start.y))));

// Calcule maintenant le rectangle délimiteur du cercle en mode tracé MM_TEXT
m_EnclosingRect = CRect(Start.x - Radius, Start.y - Radius,
Start.x + Radius, Start.y + Radius);

m_Color = Color; // Définit la couleur du cercle
m_Pen = PenWidth; // Définit l'épaisseur de la plume
}

// Dessine un objet CCircle
void CCircle::Draw(CDC* pDC) const
{
// Crée une plume associé à cet objet et l'initialise avec la couleur de l'objet et l'épaisseur du trait
CPen aPen;
if(!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))
{
// Echec de la création de la plume. Abondon du programme
AfxMessageBox("Echec du tracé d'un rectangle", MB_OK);
AfxAbort();
}

CPen* pOldPen = pDC->SelectObject(&aPen); // Sélectionne la plume

CBrush* pOldBrush = static_cast<CBrush*>(pDC->SelectStockObject(NULL_BRUSH)); // Sélectionne un pinceazu vide

// Maintenant, dessine le cercle
pDC->Ellipse(m_EnclosingRect);

pDC->SelectObject(pOldBrush); // Restitue l'ancien pinceau
pDC->SelectObject(pOldPen); // Restitue l'ancienne plume
}

// Constructeur de la classe CCurve
CCurve::CCurve(const CPoint& FirstPoint, const CPoint& SecondPoint, const COLORREF& Color)
{
m_PointList.AddTail(FirstPoint); // Ajoute le 1er point dans la liste
m_PointList.AddTail(SecondPoint); // Ajoute le 2nd point dans la liste
m_Color = Color;
m_Pen = 1;

// Construit le rectangle délimiteur en mode MM_TEXT
m_EnclosingRect = CRect(FirstPoint, SecondPoint);
m_EnclosingRect.NormalizeRect();
}

void CCurve::AddSegment(const CPoint& Point)
{
m_PointList.AddTail(Point); // Ajoute le point à la fin

// Modifie le rectangle délimiteur du nouveau point
m_EnclosingRect = CRect(min(Point.x, m_EnclosingRect.left),
min(Point.y, m_EnclosingRect.top),
max(Point.x, m_EnclosingRect.right),
max(Point.y, m_EnclosingRect.bottom));
}

// Dessine un objet CCurve
void CCurve::Draw(CDC* pDC) const
{
// Crée une plume associée à cet objet et
// l'initialise avec la couleur de l'objet et l'épaisseur du trait d'1 pixel
CPen aPen;
if (!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))
{
// Echec de création de la plume. Fermeture du programme.
AfxMessageBox("Echec de la création de la plume au cours du tracé d'une courbe", MB_OK);
AfxAbort();
}
CPen* pOldPen = pDC->SelectObject(&aPen); // Sélectionne la plume

// Tarce la courbe maintenant
// Obtient la position dans la liste du premier élément
POSITION aPosition = m_PointList.GetHeadPosition();

// Si elle est correcte, se déplace vers ce point
if(aPosition)
pDC->MoveTo(m_PointList.GetNext(aPosition));

// Trace un segment pour chacun des points suivants
while(aPosition)
pDC->LineTo(m_PointList.GetNext(aPosition));

pDC->SelectObject(pOldPen); // Restitue l'ancienne plume
}


j'ai l'impression qu'il ne reconnait pas CList comme conteneur et je ne sais pas pourquoi. Car les erreurs sont liées a CList

merci de la reponse
mercredi 23 juin 2004 à 00:20:41 | Re : conteneur CList dans aplication du type paint

ymca2003

as tu mis #include <afxtmpl.h> dans le fichier "SdtAfx.h" ?
mercredi 23 juin 2004 à 00:40:57 | Re : conteneur CList dans aplication du type paint

andarius40

oui j'ai bien mis <afxtmpl.h> dans "StdAfx.h"

j'ai essayer avec <afxtempl.h> car c'est ce qui est ecris dans le livre.

mais cela ne change rien au erreur

Est ce que le c++ peut ne pas connaitre les conteneurs, comme si il netait pas gerer un meme installer

mercredi 23 juin 2004 à 20:45:52 | Re : conteneur CList dans aplication du type paint

ymca2003

pourrais-tu remettre le contenu de fichier element.h avec les retours à la ligne (parce que là c'est pas jouable...)
mercredi 23 juin 2004 à 21:11:19 | Re : conteneur CList dans aplication du type paint

andarius40

ok le voici

#if !defined(Elements_h)
#define Elements_h

// Classe d'éléments générique
class CElement : public CObject
{
protected:
COLORREF m_Color; // Couleur d'un élément
CRect m_EnclosingRect; // Rectangle englobant un élément
int m_Pen; // Epaisseur de la plume

public:
virtual ~CElement(){} // Destructeur virtuel

// Opération de dessin virtuelle
virtual void Draw(CDC* pDC) const {} // Opération de // dessin virtuelle
CRect GetBoundRect() const; // Obtient le rectangle //englobant d'un élément

protected:
CElement(){} //Constructeur par défaut
};

// Classe définissant un objet ligne
class CLine : public CElement
{
public:
virtual void Draw(CDC* pDC) const; // Fonction // affichant une ligne

// Constructeur pour un objet ligne
CLine(const CPoint& Start, const CPoint& End,
const COLORREF& Color, const int& PenWidth);

protected:
CPoint m_StartPoint; // Première extrémité de la ligne
CPoint m_EndPoint; // Seconde extrémité de la ligne

CLine(){} // Constructeur par défaut - à ne pas utiliser
};

// Classe définissant un objet rectangle
class CRectangle : public CElement
{
public:
virtual void Draw(CDC* pDC) const; // Fonction //affichant une ligne

// Constructeur pour un objet rectangle
CRectangle(const CPoint& Start, const CPoint& End, const COLORREF& Color,
const int& PenWidth);

protected:
CRectangle(){} // Constructeur par défaut - à ne pas //utiliser

};

// Classe définissant un objet cercle
class CCircle : public CElement
{
public:
virtual void Draw(CDC* pDC) const; // Fonction affichant une // ligne

// Constructeur pour un objet cercle
CCircle(const CPoint& Start, const CPoint& End, const COLORREF& Color,
const int& PenWidth);

protected:
CCircle(){} // Constructeur par défaut - à ne pas utiliser
};

// Classe définissant un objet courbe
class CCurve : public CElement
{
public:
virtual void Draw(CDC* pDC) const; // Fonction affichant // une ligne

// Constructeur pour un objet courbe
CCurve(const CPoint& FirstPoint, const CPoint& SecondPoint, const COLORREF& Color);

void AddSegment(const CPoint& Point); // Ajoute un //segment à la courbe

protected:
// Inserer les membres données CCurve ici
CList<CPoint, const CPoint&> m_PointList;
// Liste de points Type safe

CCurve(){} // Constructeur par défaut - à ne pas utiliser
};


#endif // !Defined(Elements_h)



mercredi 23 juin 2004 à 21:15:29 | Re : conteneur CList dans aplication du type paint

andarius40

desole le voici



#if !defined(Elements_h)
#define Elements_h

// Classe d'éléments générique
class CElement : public CObject
{
protected:
COLORREF m_Color;
// Couleur d'un élément
CRect m_EnclosingRect;
// Rectangle englobant un élément
int m_Pen; // Epaisseur de la plume

public:
virtual ~CElement(){} // Destructeur virtuel

// Opération de dessin virtuelle
virtual void Draw(CDC* pDC) const {}
// Opération de dessin virtuelle
CRect GetBoundRect() const;
// Obtient le rectangle englobant d'un élément

protected:
CElement(){} //Constructeur par défaut
};

// Classe définissant un objet ligne
class CLine : public CElement
{
public:
virtual void Draw(CDC* pDC) const;
// Fonction affichant une ligne

// Constructeur pour un objet ligne
CLine(const CPoint& Start, const CPoint& End, const COLORREF& Color, const int& PenWidth);

protected:
CPoint m_StartPoint;
// Première extrémité de la ligne
CPoint m_EndPoint;
// Seconde extrémité de la ligne

CLine(){}
// Constructeur par défaut - à ne pas utiliser
};

// Classe définissant un objet rectangle
class CRectangle : public CElement
{
public:
virtual void Draw(CDC* pDC) const;
// Fonction affichant une ligne

// Constructeur pour un objet rectangle
CRectangle(const CPoint& Start, const CPoint& End, const COLORREF& Color, const int& PenWidth);

protected:
CRectangle(){} // Constructeur par défaut

};

// Classe définissant un objet cercle
class CCircle : public CElement
{
public:
virtual void Draw(CDC* pDC) const;
// Fonction affichant une ligne

// Constructeur pour un objet cercle
CCircle(const CPoint& Start, const CPoint& End, const COLORREF& Color, const int& PenWidth);

protected:
CCircle(){} // Constructeur par défaut
};

// Classe définissant un objet courbe
class CCurve : public CElement
{
public:
virtual void Draw(CDC* pDC) const;
// Fonction affichant une ligne

// Constructeur pour un objet courbe
CCurve(const CPoint& FirstPoint, const CPoint& SecondPoint, const COLORREF& Color);

void AddSegment(const CPoint& Point);
// Ajoute un segment à la courbe

protected:
// Inserer les membres données CCurve ici
CList<CPoint, const CPoint&> m_PointList;
// Liste de points Type safe

CCurve(){} // Constructeur par défaut
};


#endif // !Defined(Elements_h)





Cette discussion est classée dans : const, rectangle, color, pdc, plume


Répondre à ce message

Sujets en rapport avec ce message

détecter un forme rectangle dans un image en java [ par wahid2006 ] SVP Comment [b][i][color=red]détecter un forme rectangle dans un image en java[/color][/i][/b] JE besoin de code en java pour faire terminer le PFE. codage en C sous Linux [ par fredbubu65 ] Frédéric.[^^happy13] Bonjour, je dois faire un programme sous Linux en C avec la bibliothèque Ncurses. Ca c'est pas trop le problème. Le code est à pr Algorithme de classification BIRCH en C++ [ par ursache ] Salut tout le monde, j'aimerais bien si vous m'aidez a propos d'[b]algorithme de classification BIRCH en C++[/b], si quelqu'un le dispose ou vous avez puissance en c++ [ par rama340 ] [color=purple] salut; comment j'affiche x puissance n en c++!!!![^^!1] et une autre question, comment j'utilise les fichier en c++!! merci[^^happy13]/ chercher chemin d'un fichier [ par rayhanah ] [size=100][color=green]Bonjour S'il vous plait,je cherche le chemin d'un fichier en se basant sur une chaine de caractères qu'il contient et je p transport urbain [ par amilah19 ] bonjour, j'aimerai savoir ce que fais exactement ce programme j'arrive pas a saisir le sens des deux lignes en rouge, j'ai trouvé ce programme dans un operator[] [ par lovo ] Salut, je créer une classe matrice en ce moment avec comme data member un double**. Je n'arrive pas a faire l'opérateur d'acces à ma matrice [code=cp Programmer pour les erreurs [ par kml404 ] bonjour [b]exp;[/b] par [u]Application console Win32[/u] j'ai fait supprimé ce mot "stdafx.h", nouveau ajouté "windows.h" apres, fait les augman classes imbriquées accès aux infos [ par simo035 ] Bonsoir tous le monde ! Problème de débutant, merci pour vôtre aide. J'ai une classe Liste avec deux classe imbriquées Element et Place. Disons par e Inclure une variable int dans un char ? [ par twintornado ] Mon probleme est simple : disont que j'ai une variable entière : int variable = 488 ; // on suppose qu'elle peut changer bien sur Je veux maintenan


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales