Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 2011
-
10 mars 2006 à 12:09
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 2011
-
10 mars 2006 à 14:29
Bonjour tous!
J'espère que quelqu'un pourra m'éclairer avant que je ne fasse un meutre...
Voila, j'ai beau avoir un livre (le Petzold) et msdn, je n'arrive toujours pas à comprendre le fonctionnement de la fonction SetWindowOrgEx.
Quand je pense avoir compris et que je vérifie avec des exemples, ça me donne des résultats différents de ce que j'aurais pensé.
Là ça fait 2h que je cherche à comprendre un truc aussi minable que ça !
Le pire c'est que j'arrive à utiliser comme je veux les fonctions SetMapMode, SetWindowExtEx, SetViewportExtEx et SetViewportOrgEx, même combinés! Ce qui laisserais croire que j'ai l'air de bien les comprendre celles-ci!
Mais SetWindowOrgEx, pas moyen, mais vraiment pas...
Quelqu'un pourrait-il m'expliquer avec des mots simples exactement comment ça fonctionne? Je souhaiterais l'utiliser dans le cadre suivant :
"This mean that the clockdisplay will be centered in DIGCLOCK's client area but that DIGCLOCK can use axes with an origin of (0, 0) at the upper-left corner of the display"
BruNews> Oui j'avais compris ce que tu viens de dire! L'incompréhension doit venir d'autre part. Je ne comprend pas la logique de la fin de la phrase qui dit que l'origin est dans le coin en haut à gauche du truc affiché.
Si je suis les lignes de commandes dans l'ordre, ça me donne (corrige moi s'il y a une erreur) :
- défini le map mode dans le hdc comme "isotropic" (unités arbitraires sur chaque axe mais égales)
- définit le client area de la fenetre comme faisant 276 sur 72.Donc, 276u cxClient PIXELS et 72u cyClient PIXELS
Enfin, pas exactement, Windows retaille pour respecter le ISOTROPIC.
- il place le point d'origine du HDC au centre du client aréa (situé à 138u en x, et 36 en y)
- SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ; <<< on part du nouveau point d'origine donné par l'instruction précédente (centre du client aréa); le point situé ALORS en (cxClient /2; cyClient / 2), correspond donc au coin inférieur droit !
Et c'est là que je ne calle pas...parce que c'est pas ce que dit Petzold et la pratique ... où est mon erreur de logique ?