begin process at 2012 05 29 18:09:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

pb de contexte mémoire


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

pb de contexte mémoire

lundi 3 janvier 2005 à 18:39:48 | pb de contexte mémoire

gregory6

bonjour
je développe sous visual c++ et les MFC.
je créé une classe ds laquelle j'utilise la fonction suivante : elle affiche une valeur tapé au clavier ds un rectangle.
cette fonction fait appel à une autre classe qui dessine mon texte et mon rectangle.

void MaClasse::Dessiner(CDC& dcMem, CPen* ppinceau[7], CBrush* pbrosse[6], CString Nom)
{  
 int ct[3];
 CString val;
 if(Type==4)
 {
  val.Format("%d °",valeur*signe);
 }
 else
 {
  val.Format("%d m",valeur*signe);
 }

 ct[0]=255;
 ct[1]=255;
 ct[2]=000; 
 rectangle rect1(30,115,150,180,1,0,"",ct);
 rect1.Dessiner(dcMem,ppinceau,pbrosse);
 ecriture text1(30,125,150,180,0,Nom,ct,2);
 text1.Dessiner(dcMem,pbrosse);
 ecriture text2(30,150,150,170,0,val,ct,2);
 text2.Dessiner(dcMem,pbrosse);
 
}

void rectangle::Dessiner(CDC& dcMem, CPen* ppinceau[7],CBrush* pbrosse[6])
{
 CBrush* pOldBrush;
 CPen* pOldPen;
 CRect rect(x1,y1+3,x2,y2+3);
 pOldBrush=dcMem.SelectObject(pbrosse[couleurFond]);

 pOldPen=dcMem.SelectObject(ppinceau[couleurBord]);
 dcMem.Rectangle(x1,y1,x2,y2);

 LOGBRUSH logbrush;
 pbrosse[couleurFond]->GetLogBrush( &logbrush );
 dcMem.SetBkColor(logbrush.lbColor);
 dcMem.SetTextColor(RGB(couleurText[0],couleurText[1],couleurText[2]));

 dcMem.DrawText(texte,texte.GetLength(),&rect,DT_CENTER);

 dcMem.SelectObject(pOldBrush);
 dcMem.SelectObject(pOldPen);

}


je déclare
Ma Classe touche;
puis j'appelle
touche.Dessiner(dcMem,pinceau,brosse,"TEXTE");

Voilà il n'y pas d'erreur à la compilation mais qd je lance l'exe il plante à cause d'une erreur ds le fichier wingdi.cpp. Apparement l'erreur est lié à ma CBrush. Pourtant qd j'appelle une fonction de ma classe rectangle elle fonctionne parfaitement.

Qqn pourrait il m'aider, je vous remercie.

lundi 3 janvier 2005 à 19:22:01 | Re : pb de contexte mémoire

CriPpLe

Je ne vois pas UpdateData(TRUE); pour récuperer les valeurs du GUI et UpdateData(FALSE); pour actualiser tout à ça, appelles tu ces fonctions quelque part dans ton programme ?

Si il ya un probleme de contexte mémoire, ça doit surment venir d'un tableau, essaye de voir si ça vient pas d'eux.

Je ne suis pas très fort, donc peut être que je ne serai d'aucune aide.

lundi 3 janvier 2005 à 19:47:22 | Re : pb de contexte mémoire

gregory6

Merci pour ton aide mais je crois que c'est lié à autre chose, il n'affiche meme pas le rectangle alors que qd j'appelle la fonction de la classe rectangle hors de maClasse elle fonctionne. Sinon updatedata doit surement etre utile pour remettre à jour les valeurs tapés au clavier.
Je débute aussi et j'ai un peu de mal.
 
En fait l'erreur vient de ces lignes de codes il plante à ce niveau là dans le fichier wingdi.cpp
CBrush* CDC::SelectObject(CBrush* pBrush)
{
ASSERT(m_hDC != NULL);
 HGDIOBJ hOldObj = NULL;

 if (m_hDC != m_hAttribDC)
  hOldObj = ::SelectObject(m_hDC, pBrush->GetSafeHandle());
 if (m_hAttribDC != NULL)
  hOldObj = ::SelectObject(m_hAttribDC, pBrush->GetSafeHandle());
 return (CBrush*)CGdiObject::FromHandle(hOldObj);
}

lundi 3 janvier 2005 à 22:43:53 | Re : pb de contexte mémoire

vdust

La commande ASSERT(m_hDC != NULL) vérifie si le DC existe. S'il n'existe pas, il retourne une erreur. C'est donc que le DC que tu passe as ta fonction Dessiner dans MaClasse (via le premier argument de la fonction) n'est pas valide.

lundi 3 janvier 2005 à 23:04:48 | Re : pb de contexte mémoire

gregory6

salut

je pense que tu as raison, c sur même mais je ne vois pas trop pourquoi. Pour éviter les effets de clignotements je dessine ds un buffer mémoire mon dcMem que je bitblt par la suite.
Lorsque j'appelle ma fonction de la classe rectangle en dehors de ma classe tout fonctionne, je ne comprends pas pourquoi lorsque j'appelle cette meme fonction de la classe rectangle ds "MaClasse", cela ne marche plus.
Je vais chercher ds la direction que tu m'as indiqué mais si tu as des infos supplémentaires, je t'en remercie.

++



Cette discussion est classée dans : rectangle, dessiner, ct, dcmem, pbrosse


Répondre à ce message

Sujets en rapport avec ce message

piking [ par seb_nachos ] bonjour, je créer une interface graphique Qt dans la quelle g une fenetre OpenGl. j'aimerais dessiner sur cette fenetre ! on m'a expliquer (on doit ut GTKMM dessiner une image ou presque [ par Ricool ] Bonjour, voici mon probleme, je dois dessiner une image dans un rectangle de taille variable (h, l) qui se redimensionne avec ma fenetre. Pour dessin dessiner une rectangle noir [ par mamstyle ] bonsoir, en ce moment je fais un projets visual en c++, et j'aimerai avoir de l'aide svp.j'aimerai dessiner dans ma boite de dialogue une zone d'affic Dessiner un rectangle dans la fenêtre principale de l'application [ par 27adri27 ] Bonjour, Je suis nouveau sur le forum, alors excuser moi si je n'adopte pas la bonne méthode... Voilà, je développe une application en C++ avec une problème ontexte mémoire et classe [ par gregory6 ] 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 DC ou fenetre ? [ par AlexMAN ] Bonsoir, Voila, je voux explik mon pb : je veux dessiner, 'sur' les controles d'une fenetre, un rectangle, mais j'ai un ptit souci sur comment dessine comment dessiner un repaire orthonormé dans un rectangle [ par witon ] salut salut ! voila je vous expose mon problème je dois dessiner un repaire orthonormé dans un rectangle (un rectangle minimum qui délimite d'un objet Diviser hauteur en 3 parties égales [ par goutbouyo ] Salut,Comment puis je faire pour diviser la hauteur d'un rectangle en plusieurs parties égales ???Exemple : rectangle de hauteur 165.Au début j'ai fai dessiner un graphe avec openGL [ par patrice972 ] salut, quelqu'un aurait il connaissance (voire du code !!) des possibilités de dessiner des graphes (ajouter des noeuds et relier ces noeuds avec des problème dessiner image dans fenêtre [ par raoulman ] Bonjour Comme je tourne en rond, je viens chercher de l'aide. J'essaye de faire un morpion en GDI, c'est pour apprendre. J'ai une fenêtre mère avec 9


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 1,201 sec (4)

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