CITATION(Orabig @ 27/11/2006 à 20:50 )

Moi aussi, je voudrais bien savoir pourquoi c'est étrange...
Ca fait plus de 20 ans que je programme (sic, ca me rajeunit pas), et ca a toujours ressemblé à quelque chose comme ça....
Mais bon, à mon avis, le monsieur il a sa réponse, et c'est pas sur qu'il repasse dans le coin pour éclairer nos lanternes...

Bein tous les langages que je connais fonctionne avec des propriétés qui s’appliquent à un objet, ainsi on peu changer les propriétés de l'objet sans toucher à l'objet lui même.
Si on part du principe que le rectangle dans HB++ est un objet alors, on assigne la couleur rouge au contexte, on dessine le rectangle (qui sera donc dessiner en rouge), et si après on veut changer des propriétés du rectangle (en bleu par exemple), on doit donc changer le contexte en bleu, et après on doit redessiner l'objet, et donc pour moi c'est un nouvel objet, on ne peut donc pas modifier les propriété de l'objet et faire un refaire un paint().
Si on prend des langages, comme java, c++, ou encore l'un des plus utiliser CSS, on assigne bien des propriétés a un objet, et non a un contexte.
Dans un langage Objet, une fois l'objet déclaré, on assigne un certain nombre de méthode a cet objet, et c’est ces méthodes qui vont changer l’objet indépendamment de ce qui se passe autour.
En vb .net, on passe par un pseudo contexte et effectivement on applique les propriétés a ce contexte mais la différence, c’est qu’on applique spécifiquement ce contexte a l’objet, ainsi le contexte devient une propriété de l’objet :
myGraphics.DrawRectangle(myPen, 100, 50, 80, 40), myPen etant le contexte ou on aura décider de dessiner en Rouge.
En hb++, si j'ai bien compris, si on crée deux rectangles, en utilisant exactement la même ligne de code pour le créer, si le contexte a changer entre les deux on aura deux rectangle différents, je trouve ca étrange car encore une foi je ne connais aucun autre langage qui procède ainsi, et attention, je n'ai pas dit que s'était pas bien, j'ai juste dit que s'était étrange.
En java : rectangle.changeColor(‘Red’)
En basic : LINE (X,Y),couleur
En picwin : /drawrect-ihnrfed @[win] [couleur] [taille] [x y w h]
En SDL : SDL_FillRect(sEcran,&rect,SDL_MapRGB(sEcran->format,R,G,B))
En javascript : objR1.couleur = "rouge"
…
Ceci etant, je viens de tester, et c’est vrai que ca a l’air plus simple, et Olivier101 a raison, quand la notion de contexte n'existe pas, chacune des fonctions graphiques primitives devrait prendre tout un tas de paramètres, et ca alourdi terriblement les packages du langage.