begin process at 2012 05 25 11:47:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Aide a la programmation Windows

 > 

Parcours tableau de HWND


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

Parcours tableau de HWND

mercredi 14 juillet 2004 à 16:23:43 | Parcours tableau de HWND

AlexMAN

Membre Club
Bonjour,

Voila mon pb :
Je declare un tableau de HWND comme suit :

hwndCmd HWND 10 dup (?)

Ensuite, je veux créer 10 boutons et stocker leur handle ds chak element de ce tableau, voici le code :

;Creation des controles en faisant une boucle;
mov y, 0
xor edx, edx
mov esi, hwndCmd
Create:
cmp edx, 10
je Fini
mov eax, edx
add y, eax
add y, 50
INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR AppName, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, 0, y, 50, 40, \
hwnd, NULL, hInst, NULL
mov esi, eax
inc edx
add esi, 4
jmp Create
Fini:


Voila, le code passe a la compilation mais pas a l'execution, si kelkun pouvait m'aider..

Merci d'avance !

++

Alhexman
mercredi 14 juillet 2004 à 17:01:49 | Re : Parcours tableau de HWND

BruNews

Administrateur CodeS-SourceS
mov [esi], eax ; adresse de

vire ce 'invoke' et sers toi des registres dans une boucle pour faire une boucle optimisee.

cmp edx, 10
en haut de boucle alors que tu viens de le mettre a 0, non coherent.

ciao...
BruNews, Admin CS, MVP Visual C++
mercredi 14 juillet 2004 à 17:03:30 | Re : Parcours tableau de HWND

BruNews

Administrateur CodeS-SourceS
ah oui, oublie de preciser que l'adresse d'un tableau ou autre est 'offset mnemo'.

ciao...
BruNews, Admin CS, MVP Visual C++
mercredi 14 juillet 2004 à 18:21:19 | Re : Parcours tableau de HWND

AlexMAN

Membre Club
Ok merci, ca marche maintenant, mais est ce que c necessaire que je garde le handle de tous les controles ? Je pense pas, si ?
mercredi 14 juillet 2004 à 18:24:33 | Re : Parcours tableau de HWND

AlexMAN

Membre Club
Enfin, regarde le code, rien que pour créer les controles, jtrouve ca enorme (c de l'asm mais bon), j'ai pas encore remplacé l'invoke par un call, ca va se faire :

;Creation des controles en faisant une boucle;
mov x, 50
mov i, 0
mov esi, offset hwndNum
;mov edi, offset hwndOp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
prem:
invoke dwtoa, i, addr buf
INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR buf, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, x, 50, 30, 30, \
hwnd, NULL, hInst, NULL

mov [esi], eax
add esi, 4
add x, 30
inc i
cmp i, 3
jb prem
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR Plus, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, x, 50, 30, 30, \
hwnd, NULL, hInst, NULL

;mov [edi], eax
;add edi, 4


mov x, 50
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sec:
invoke dwtoa, i, addr buf
INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR buf, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, x, 80, 30, 30, \
hwnd, NULL, hInst, NULL

mov [esi], eax
add esi, 4
add x, 30
inc i
cmp i, 6
jb sec
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR Moins, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, x, 80, 30, 30, \
hwnd, NULL, hInst, NULL

;mov [edi], eax
;add edi, 4

mov x, 50
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
trois:
invoke dwtoa, i, addr buf
INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR buf, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, x, 110, 30, 30, \
hwnd, NULL, hInst, NULL

mov [esi], eax
add esi, 4
add x, 30
inc i
cmp i, 9
jb trois
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR Divi, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, 140, 110, 30, 30, \
hwnd, NULL, hInst, NULL

;mov [edi], eax
;add edi, 4

mov i, 0
invoke dwtoa, i, addr buf
INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR buf , \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, 80, 140, 30, 30, \
hwnd, NULL, hInst, NULL

mov [esi], eax

INVOKE CreateWindowEx, NULL, ADDR ClassButton, ADDR Mult, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, 140, 140, 30, 30, \
hwnd, NULL, hInst, NULL

;mov [edi], eax


Je voulais me servir de edi pour stocker l'adresse de mon 2eme tableau, mais ya erreur, kel registre (otre ke esi) je peu utiliser pour faire ca ?
mercredi 14 juillet 2004 à 18:26:26 | Re : Parcours tableau de HWND

AlexMAN

Membre Club
Oula, ya un pb la ! c pa la premiere fois que je le remark ! Les commentaires sont troqué sur la droite !
mercredi 14 juillet 2004 à 18:35:44 | Re : Parcours tableau de HWND

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
ou comments sont tronques mais on peut les avoir par copier/coller. Nix va s'en occuper des que possible.
On stocke ce qu'on veut dans EDI ou nimporte quel autre registre pendant l'execution du bloc mais TOUS registres autres que EAX,ECX et EDX doivent etre restitues en sortie comme tu les as trouves en entree.


ciao...
BruNews, Admin CS, MVP Visual C++
mercredi 14 juillet 2004 à 19:13:26 | Re : Parcours tableau de HWND

BruNews

Administrateur CodeS-SourceS
Et voila deja servi, Nix vient de faire la rustine anti tronquage.

ciao...
BruNews, Admin CS, MVP Visual C++
mercredi 14 juillet 2004 à 20:00:27 | Re : Parcours tableau de HWND

AlexMAN

Membre Club
Ptite kestion encore, pour conserver la valeur des registres au debut du prog, c "pushad", "pusha" ? et pour depiler "popad", "popa" ? Ou je dois "pusher" chak registre, et les depiler en sortant ?
mercredi 14 juillet 2004 à 20:08:05 | Re : Parcours tableau de HWND

BruNews

Administrateur CodeS-SourceS
non pas au debut du prog mais de chaque bloc (fonction en C).
push esi
push edi
voila par exemple.

en sortie:
pop edi
pop esi

fais bien gaffe a l'ordre des POPs, juste question de pure logique, le dernier push sera le 1er pop.

ciao...
BruNews, Admin CS, MVP Visual C++

1 2

Cette discussion est classée dans : tableau, mov, hwnd, edx, esi


Répondre à ce message

Sujets en rapport avec ce message

# Export Table - Kernel32.dll - GetProcessAddress # [ par joanna ] Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la # Export Table --- Kernell32.dll --- GetProcAddress # [ par joanna ] Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la HELP ! :'( [ par TheHacker ] Salut j'ai un probleme: voici mon code, il fonctionne correctement, activer le programme vous verres qu'a la fin i laffiche un MessageBox avec marqué Différences ??? [ par Arecibo ] Voila je debute en assembleur et j'aimerais savoir quelles sont les différences entre :-> mov eax, ebx et mov eax, [ebx]-> mov esi, eax et mov [esi], Parcour et trie d'un tableau [ par SalAdiN23 ] salut à tt.bon voila c pr trié un tableau d'entiees en ordre croissent.et avré dire je cpas tropcomment parcourir un tableau en assembleur.en pascal p 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 Problème avec un code [ par showbiz_hurricanes ] Bonjour Pour un projet universitaire, je dois concevoir un programme de tri en assembleur mais celui ci ne fonctionne pas comme je le voudrai. Le Une mémoire "read" [ par msteve ] Bonsoir, Je suis débutant et j'ai recopié un programme test. Je parviens à l'assembler, puis à créer un .exe ; quend je lance l'exe j'obtiens la boîte Peut on mieux faire ? [ par spiky31 ] Bonjour Voila j'ai commencé ce matin a programmer en assembleur intel et j'aurais voulu avoir votre avis (Je me considére pas vraiment comme un noob Inversion de chaîne [ par Bidou ] Bonjour à tous,A vrai dire je suis plutôt nouveau en asm et pas très bon lol. Mais bon, faut bien commencer un jour hein. Pour me faire la main, j'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 0,827 sec (3)

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