Bonjour
Je travaille sous visual C++ et j?ai un petit problème de classe et de contexte mémoire. Je crée une classe ligne que j?appelle ds ma fonction afficherMenu mais à la compilation, il trouve une erreur dans la fonction dessiner :
error C2664: 'Dessiner' : cannot convert parameter 1 from 'class CDC' to 'class CDC'
No copy constructor available for class 'CDC'
Je pense aussi qu?il y eu erreur dans mon code au niveau de la déclaration du CpaintDC. J?ai du mal avec les contextes de périphériques.
Sinon sans l?appel à ma classe le programme marche parfaitement.
Je vous remercie pour votre aide car ça fait un moment que je bloque sur ce problème.
++
Joyeuses Fetes
CDC dcMem;
void CProjecttestDlg::AfficherMenu ()
{
CPaintDC dc(this);
GetClientRect(rect);
dcMem.CreateCompatibleDC(&dc);
bitmap.CreateCompatibleBitmap(&dc,240,320);
CBitmap* pOldBitmap = dcMem.SelectObject(&bitmap);
CBrush backBrush (RGB(010,106,010));
dcMem.FillRect(rect, &backBrush);
CString s0="TEXTE";
dcMem.SetTextAlign(TA_BASELINE | TA_LEFT);
dcMem.SetTextColor(RGB(255,255,255));
dcMem.SetBkMode(TRANSPARENT);
dcMem.TextOut(38,18,s0,11);
int ct[3];
ct[0]=255;
ct[1]=128;
ct[2]=000;
ligne line1(0,25,240,25,1);
line1.Dessiner(dcMem,pinceau);
ligne line2(160,0,160,320,1);
line2.Dessiner(dcMem,pinceau);
}
void CProjecttestDlg::OnPaint()
{
CPaintDC dc(this);
GetClientRect(rect);
dc.BitBlt(0,0,240,320,&dcMem,0,0,SRCCOPY);
dc.SelectObject(pOldBitmap);//pr l'instant supprimer
bitmap.DeleteObject();
dcMem.DeleteDC();
}
//Ligne.h
class ligne
{
private:
int x1;
int x2;
int y1;
int y2;
int couleurBord;
public:
ligne();
ligne(int,int,int,int,int);
void Dessiner(CDC,CPen*[7]);
};
//ligne.cpp
ligne::ligne()
{
}
ligne::ligne(int xx1,int yy1, int xx2, int yy2,int CB)
{
x1=xx1;
x2=xx2;
y1=yy1;
y2=yy2;
couleurBord=CB;
}
void ligne::Dessiner(CDC dcMem, CPen* ppinceau[7])
{
CPen* pOldPen;
pOldPen=dcMem.SelectObject(ppinceau[couleurBord]);
dcMem.MoveTo(x1,y1);
dcMem.LineTo(x2,y2);
dcMem.SelectObject(pOldPen);
}