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

  FORUM HardWare.fr
  Programmation
  C++

  [VC++] Généricité

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VC++] Généricité

n°1007806
Xuarac
Posté le 10-03-2005 à 10:39:32  profilanswer
 

Un carré se dessine par la séquence  
  MoveTo(left, top);
  LineTo(right, top);
  LineTo(right, bottom);
  LineTo(left, bottom);
  LineTo(left, top);
 
Ce code est générique et peut s’appliquer dans n’importe quel environnement de dessin.
 
J’aimerais définir cette suite d’instructions applicable à toutes les classes disposant des fonctions MoveTo() et LineTo(), sans avoir à redéfinir, dans chaque classe, une fonction carré qui aurait ce même code.
 
Comment faire ?
 
J’ai tenté cette ébauche de code qui ne marche pas.
 
void CTotoView::OnDraw(CDC* pDC)
{
   if(IsPostScript)
      pDC = new CDC_PS;
   pDC->MoveTo(10,10);
   pDC->LineTo(100,10);
   pDC->LineTo(100,100);
   pDC->LineTo(10,100);
   pDC->LineTo(10,10);
}
 
Le pointeur pDC pointe sur un objet de la classe CDC et ne permet d’appeler que la version CDC de MoveTo() et LineTo(), pas celle de CDC_PS.
 
Si CDC_PS était une classe pouvant générer des instructions PostScript, à l’aide de ses fonctions membres MoveTo() et LineTo(), comment pourrais-je m’adresser à CDC_PS pour faire mon carré plutôt qu’à CDC ?
Est-il possible que le pointeur pDC puisse être utilisé de façon dynamique pour pointer des objets de la class CDC ou de la classe CDC_PS ?
 
Merci pour vos lumières.
 

mood
Publicité
Posté le 10-03-2005 à 10:39:32  profilanswer
 

n°1007810
coffeeman
Posté le 10-03-2005 à 10:40:54  profilanswer
 

mixin' layers :o


---------------
Moi, j'aime pas les signatures - J'écoute actuellement :
n°1007971
HelloWorld
Salut tout le monde!
Posté le 10-03-2005 à 11:34:54  profilanswer
 

En faisant dériver CDC_PS de CDC et en la filant en paramètre de OnDraw (polymorphisme).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1009011
Xuarac
Posté le 10-03-2005 à 23:32:02  profilanswer
 

Je n'ai pas compris !!!
Que veux-tu passer en paramètre à OnDraw ?
 
OK pour faire dériver CDC_PS de CDC pour faire du polymorphisme de méthode mais alors comment déclarer virtuelle une fonction déja définie dans CDC (exemple MoveTo) ?

n°1009396
HelloWorld
Salut tout le monde!
Posté le 11-03-2005 à 10:59:06  profilanswer
 

J'avais pas compris que tu voulais greffer ton truc par dessus les MFC.
Pour faire un carré on fait pDC->Rectangle( 10, 10, 100, 100 );
Y'a un problème dans ton design, c'est pas dans OnDraw qu'il faut mettre ton code car tu recois le CDC dans lequel dessiner. Faut mettre à ailleurs (MyDraw() par exemple) que tu appelles depuis OnDraw pour dessiner dans la fenêtre et depuis je sais pas où pour dessiner dans ton PS.
L'idéal serait d'avoir un DC post script, dans ce cas tout serait fait tout seul (comme avec wxWidgets qui définit wxPostScriptDC qui dérive de wxDC, donc rien de particulier à faire).
Comment tu fais pour dessiner dans ton postscript ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

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

  [VC++] Généricité

 

Sujets relatifs
Utiliser la généricité sans imposer un JRE compatible 1.5Généricité
asp: pb. de généricité.. Kel mot hein ??!! 
Plus de sujets relatifs à : [VC++] Généricité


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