Accueil > Forum > > > > Comment traduire CONST POINT *lpPoints en Asm
Comment traduire CONST POINT *lpPoints en Asm
lundi 26 mai 2003 à 17:36:38 |
Comment traduire CONST POINT *lpPoints en Asm

frobinet
|
Bonjour, Je veux utiliser la fonction Polygon de GDI32.DLL mais je ne sais pas comment redéfinir en assembleur un type du style : CONST POINT *lpPoints en provenant du C++ ma structure étant : PAINT_POLYGON STRUCT dwPosition DWORD ? bTypeDessin DWORD ? dwNombrePoints DWORD ? lpPoints ?????????????????????????????????? flLargeur DWORD ? dwCouleurTrait DWORD ? dwCouleurFond DWORD ? bTypeTrait DWORD ? bTypeRemplissage DWORD ? bSupprime DWORD ? PAINT_POLYGON ENDS pour le moment j'ai fais ceci qui fonctionne mais ne me permet pas de mettre le nombre de points que je veux : PAINT_POLYGON STRUCT dwPosition DWORD ? bTypeDessin DWORD ? lpPoint1 POINT <> lpPoint2 POINT <> lpPoint3 POINT <> lpPoint4 POINT <> flLargeur DWORD ? dwCouleurTrait DWORD ? dwCouleurFond DWORD ? bTypeTrait DWORD ? bTypeRemplissage DWORD ? bSupprime DWORD ? PAINT_POLYGON ENDS Merci pour tous renseignements !
|
|
lundi 26 mai 2003 à 21:02:49 |
Re : Comment traduire CONST POINT *lpPoints en Asm

CoreBreaker
|
sous TASM c'est struc et pas struct si en C++ c'est CONST POINT *lpPoints alors c'est: PAINT_POLYGON STRUC dwPosition DWORD ? bTypeDessin DWORD ? dwNombrePoints DWORD ? lpPoints DWORD ? flLargeur DWORD ? dwCouleurTrait DWORD ? dwCouleurFond DWORD ? bTypeTrait DWORD ? bTypeRemplissage DWORD ? bSupprime DWORD ? PAINT_POLYGON ENDS
|
Et pour la structure POINT: POINT struc x DWORD ? y DWORD ? POINT ends
|
Ensuite pour utiliser le champ: ... poly PAINT_POLYGON <> index DWORD ? valeurX DWORD ? valeurY DWORD ? ... mov ebx, dword ptr [index] imul ebx, size POINT ; Calcul de l'offset à partir de l'index lea esi, [poly].lpPoints ; Calcul de la base du tableau de structures POINT mov esi, [esi][ebx] ; Accéder à la structure POINT voulue
; Accès aux champs de la structure POINT pointée par ESI mov eax, [esi].x mov [valeurX], eax mov eax, [esi].y mov [valeurY], eax
| Core Breaker 
|
|
mardi 27 mai 2003 à 10:29:21 |
Re : Comment traduire CONST POINT *lpPoints en Asm

frobinet
|
Bonjour, Je programme en MASM32 et c'est Struct au lieu de Struc pour moi. Mon problème n'est pas de faire référence à une seule structure POINT mais à dwNombrePoints structures POINT. En gros je voudrais faire : lpPoints POINT 100 DUP(?) mais cette expression ne fonctionne bien sûr pas. Merci. ------------------------------- Réponse au message : ------------------------------- > sous TASM c'est struc et pas struct > si en C++ c'est CONST POINT *lpPoints alors c'est: > PAINT_POLYGON STRUC > dwPosition DWORD ? > bTypeDessin DWORD ? > dwNombrePoints DWORD ? > lpPoints DWORD ? > flLargeur DWORD ? > dwCouleurTrait DWORD ? > dwCouleurFond DWORD ? > bTypeTrait DWORD ? > bTypeRemplissage DWORD ? > bSupprime DWORD ? > PAINT_POLYGON ENDS > |
> Et pour la structure POINT: > POINT struc > x DWORD ? > y DWORD ? > POINT ends > |
> Ensuite pour utiliser le champ: > ... > poly PAINT_POLYGON <> > index DWORD ? > valeurX DWORD ? > valeurY DWORD ? > ... > mov ebx, dword ptr [index] > imul ebx, size POINT ; Calcul de l'offset à partir de l'index > lea esi, [poly].lpPoints ; Calcul de la base du tableau de structures POINT > mov esi, [esi][ebx] ; Accéder à la structure POINT voulue > > ; Accès aux champs de la structure POINT pointée par ESI > mov eax, [esi].x > mov [valeurX], eax > mov eax, [esi].y > mov [valeurY], eax > |
> > Core Breaker  >
|
|
mardi 27 mai 2003 à 19:02:59 |
Re : Comment traduire CONST POINT *lpPoints en Asm

CoreBreaker
|
Ah je comprends mieux. Je ne savais pas que que tu utilisais MASM (désolé) Je t'ai fourni du code TASM et le dup(?) fonctionne sous TASM vois si tu peux utiliser TASM32 à la place. sinon sous MASM essaie: lpPoints POINT 100 DUP(<>)
|
tu peux aussi faire et ça marche: PAINT_POLYGON STRUCT dwPosition DWORD ? bTypeDessin DWORD ? dwNombrePoints DWORD ? lpPoints BYTE (n * SIZE POINT) DUP(?) flLargeur DWORD ? dwCouleurTrait DWORD ? dwCouleurFond DWORD ? bTypeTrait DWORD ? bTypeRemplissage DWORD ? bSupprime DWORD ? PAINT_POLYGON ENDS
|
Ou PAINT_POLYGON STRUCT dwPosition DWORD ? bTypeDessin DWORD ? dwNombrePoints DWORD ? lpPoints BYTE (n * 8) DUP(?) flLargeur DWORD ? dwCouleurTrait DWORD ? dwCouleurFond DWORD ? bTypeTrait DWORD ? bTypeRemplissage DWORD ? bSupprime DWORD ? PAINT_POLYGON ENDS
|
Il faut bien comprendre que tu ne peux pas contruire une structure dans laquelle tu as exactement dwNombrePoints sutructures POINT pour laquelle la valeur dwNombrePoints est changeante car une structure a une taille statique et ne peut donc pas avoir une taille en fonction de la valeur dwNombrePoints qui est dynamique et donc déterminée à l'exécution de ton programme. Sinon il te faut faire une allocation dynamique d'un tableau de dwNombrePoints sutructures POINT et donc la structure que je t'ai donnée est parfaitement adaptée c'est à dire avec: Ce champ contient donc un pointeur sur la base du tableau dynamique. Core Breaker 
|
|
mercredi 28 mai 2003 à 11:05:32 |
Re : Comment traduire CONST POINT *lpPoints en Asm

frobinet
|
Bonjour, Merci ! je n'avais pas encore compris la subtilité de DUP ! | lpPoints POINT 100 DUP(<>) |
Pour le MASM32, je l'ai pris parce que je débute en assembleur 32 et c'est celui-que j'ai trouvé le premier. Il est facile d'installation et est fournis avec des exemples de difficultés variables assez interessantes. Encore Merci ! frobinet. ------------------------------- Réponse au message : ------------------------------- > Ah je comprends mieux. > Je ne savais pas que que tu utilisais MASM (désolé) > Je t'ai fourni du code TASM et le dup(?) fonctionne sous TASM vois si tu peux utiliser TASM32 à la place. > > sinon sous MASM essaie: > lpPoints POINT 100 DUP(<>) > |
> > tu peux aussi faire et ça marche: > PAINT_POLYGON STRUCT > dwPosition DWORD ? > bTypeDessin DWORD ? > dwNombrePoints DWORD ? > lpPoints BYTE (n * SIZE POINT) DUP(?) > flLargeur DWORD ? > dwCouleurTrait DWORD ? > dwCouleurFond DWORD ? > bTypeTrait DWORD ? > bTypeRemplissage DWORD ? > bSupprime DWORD ? > PAINT_POLYGON ENDS > |
> > Ou > PAINT_POLYGON STRUCT > dwPosition DWORD ? > bTypeDessin DWORD ? > dwNombrePoints DWORD ? > lpPoints BYTE (n * 8) DUP(?) > flLargeur DWORD ? > dwCouleurTrait DWORD ? > dwCouleurFond DWORD ? > bTypeTrait DWORD ? > bTypeRemplissage DWORD ? > bSupprime DWORD ? > PAINT_POLYGON ENDS > |
> > Il faut bien comprendre que tu ne peux pas contruire une structure dans laquelle tu as exactement dwNombrePoints sutructures POINT pour laquelle la valeur dwNombrePoints est changeante car une structure a une taille statique et ne peut donc pas avoir une taille en fonction de la valeur dwNombrePoints qui est dynamique et donc déterminée à l'exécution de ton programme. Sinon il te faut faire une allocation dynamique d'un tableau de dwNombrePoints sutructures POINT et donc la structure que je t'ai donnée est parfaitement adaptée c'est à dire avec: > > Ce champ contient donc un pointeur sur la base du tableau dynamique. > > Core Breaker  > >
|
|
Cette discussion est classée dans : const, polygon, dword, paint, lppoints
Répondre à ce message
Sujets en rapport avec ce message
Mov mem immediat, immediat [ par Erkson ]
Bonjour à tous.J'utilise un Pentium II PC, Windows ME, et un debuggeur qui a un assembleur intégré. Lorsque je veux modifier le programme que je debug
Comment utiliser AngleArc ? [ par frobinet ]
Bonjour,Je n'arrive pas à utiliser la fonction "AngleArc" de gdi32.dllen MASM32. Dans MSDN OnLine il estdit que les deux paramêtres sont des Flottant
addition d'entier [ par rhumsek ]
bonjourvoici un programme qui doit additionné les nombres d'un tableau, celui doit afficher comme résultat 1500 mais il affiche 1600, pouvez vous m'ai
Modif zone de saisie [ par noel70 ]
Bonjonr a tous.Je vous explique ce que je voudrais faire.Je voudrais changer les caracteristiques du zones de saisies par l'intermédiaire d'un bouton.
BeginPaint code débutant [ par TRAX44 ]
Bonjour, le problème est tout simple je comprends absolument pas ce qui marche pas. Le "programme" est censé créer une fenêtre est afficher du texte e
LecteurEstDvd asm inline [ par AlexMAN ]
Bonjour, Voila j'ai un ptit pb au nivo, je pense, de l'appel de la fonction DeviceIoControl, le code : //Fonction Cint __stdcall LecteurEstDvd(char *p
Cycles de mov [ par vecchio56 ]
Je me demandais si les instructions suivantes étaient équivalentes en termes de performances, ou si certaines d'entres elles demandaient plus de cycle
optimisation [ par sajid_morad ]
salut tout le monde , j ai une parti du code en c++, que j ai voulu optimiser , le l ai reécri en asm , mai ça donne pas grand chose, si quelqu un po
Bitmapinfoheader [ par noel70 ]
Bonjour a tous,Voila, j'ai fais une petite procedure pour affichier dans un control static une image.La procedure pour afficher l'image dans un static
REVERSE ENGEEER aide API [ par Fuckly94 ]
Salut tout le monde!!je me lance dans le reverse engeneer,c'est à dire la modification de programme déja compilé!!le seul probléme que j'ai,c'est pour
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|