RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Problème avec CreateWindow (débutant...)

Forum : ASSEMBLEUR - FASM
Sous Catégorie : FASM
Type du sujet : Sujet Normale
FAQ : FAQ ASSEMBLEUR - FASM

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM ASSEMBLEUR - FASM

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
Nival
Nouveau membre
Inscrit : 04/01/2006
Messages : 25
Message
#84613
Posté le 08/01/06 à 19:57
Salut tout le monde! Smiley

Je débute avec l'assembleur Win32 et ses sympathiques API et pour voir si j'avais bien compris les trucs de bases j'ai voulu créé un programme tout bête qui ouvre une fenètre qu'on peut fermer.

Le Pb c'est que j'a pas dû bien comprendre justement parcequ'il y a manifestement un problème avec mon utilisation de CreateWindow car la valeur retourné dans eax est NULL.

Voici le code que j'ai tapé (je n'ai mis que ce qui concerne la création de la fenètre ; c'est sous RosAsm):


________ ; DATAS ________ [ MainTitle: B$'Main Window',0 MainClassName: B$'MainClass',0 ] [ MainWinClass: style: 3 lpfnWndProc: MainWindowProc cbClsExtra: 0 cbWndExtra: 0 hInstance: 0 hIcon: 0 hCurs: 0 hbrBackground: 6 lpszMenuName: 0 lpszClassName: MainClassName ] [ hProg: ? hComLine: ? hMainWin: ? ] _______ ; CODE _______ call 'KERNEL32.GetModuleHandleA' 0 mov D$hProg , eax call 'USER32.RegisterClassA' MainWinClass mov D$hClass , eax call 'USER32.CreateWindowExA' , 0 , MainClassName , MainTitle , &WS_OVERLAPPEDWINDOW, 30 , 15 , 400 , 300, 0 , 0 , D$hProg , 0


Voilà, si une âme charitable pouvait me dire quelle grossière erreur j'ai commise je lui en serait trés reconnaissant!

Autrement si quelqu'un pouvait m'expliquer brièvement comment récupérer l'erreur de CreateWindow (si c'est l'API GetLastError, je ne vois pas comment il fonctionne, il me renvoi 0 (ou rien?) dans eax quand CreateWindow me renvoie 0) ça serait maxi cool aussi!

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

moby
Modérateur :
- Fortran
- Assembleur
Avatar de moby
Inscrit : 25/01/2004
Messages : 653
Message
#84651
Posté le 09/01/06 à 11:19
Tu as un exemple qui fonctionne avec les tuts de ICZELION traduit en français par MORGATE.
Dans la documentation assembleur tu trouvera les sites.
Si tu ne trouve pas met moi un mail et je te l'enverrai.
__________________________
Si tu n'a pas trouvé la réponse sur MoteurProg...
mais que tu l'as trouvé ailleurs...
Merci de la donner sur MoteurProg.
Moby

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Nival
Nouveau membre
Inscrit : 04/01/2006
Messages : 25
Message
#84667
Posté le 09/01/06 à 14:57
Ben justement le truc c'est que c'est à partir du tutorial en question que j'ai essayé de réaliser ce programme, et je me doute bien que si je recopie texto les lignes de ICZELION, ça marchera...

Le problème est justement qu'à partir de ces exemples j'avais CRU comprendre alors qu'en faite non vu que mon code marche pô....

(et soit dit en passant les tutos d'ICZELION sont pour MASM et je programme sur RosAsm, comme précisé plus haut... Mon erreur vient peut-être d'ailleurs d'une mauvaise interpétation du langage MASM)

Si quelqu'un avit la bonté de se pencher sur les 5 lignes de code ci-dessus ce serait cool, même si je sais que ce n'est pas trés amusant... (d'autant plus que je suis sûr que c'est une erreur trés bête mais rien à faire je ne trouve pas, et pourtant j'en ai déjà corrigé un bon paquet, et rien à faire! Bon, en attendant je vais continuer à chercher!)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

remi
Membre MP
Inscrit : 27/09/2004
Messages : 203
Message
#84668
Posté le 09/01/06 à 15:32
Il suffit de cliquer dans le menu file -> New Smiley et tu auras ta base de travail avec tout ce qu'il faut !

tu ne donne qu'un extrait de ton code..
Ta MainWindowProc est probablement à l'origine de ton échec de CreateWindow...

Le plus,simple est donc de commencer propre et par le début !
__________________________
www.rosasm.org/
www.quanta-it.com/easbell/RosAsmForum

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Betov
Membre régulier
Inscrit : 30/03/2005
Messages : 86
Message
#84680
Posté le 09/01/06 à 18:07
Nival, comme rémi l'a dit, le problème vient fort probablement d'une erreur dans ta ManinWindowProc. Au moment de la création d'une fenêtre, il y a déjà des messages qui doivent être correctement assumés dans ce CallBack.

Pour les Démos d'Iczelions, ellse sont traduites et disponibles sur la Page [Tutorials] de RosAsm (3eme ligne). D'autres démos sont également disponibles...

Mais, effectivement, la façon la plus simple est de choisir [Files]/[New]/[Ok], pour démarrer avec une base fonctionnelle.


Betov.

< http://rosasm.org >

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Nival
Nouveau membre
Inscrit : 04/01/2006
Messages : 25
Message
#84764
Posté le 10/01/06 à 13:47
OK merci beaucoup, je ne savais pas que la MainWindowProc était prise en compte dés l'appel de CreateWindow! (elle est effectivement fort légère en l'état...) Je pensais surtout à une erreur dans les paramètres des API et la déclaration de Classe, et autant dire que je commençais à m'arracher les cheveux! Tout semble plus clair maintenant!

Sinon certe il y a des trucs tout fait mais j'ai justement envie de comprendre comment ça marche (et pas d'utiliser des lignes de code déjà faites qui marche sans savoir pourquoi...), c'est pour ça que j'ai essayé par moi-même.

Voilà, encore Merci!

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

remi
Membre MP
Inscrit : 27/09/2004
Messages : 203
Message
#84765
Posté le 10/01/06 à 13:59
L'intérêt principal des bases n'est pas de "cacher" (au contraire) mais de simplifier le boulot de départ, évidement.
Cependant tu peux les utiliser pour comprendre l'ensemble du mécanisme d'échange des messages (y compris clic droit unfold et tout ré-écrire en bas niveau). Je te conseille aussi de suivre avec le débuggeur, en mode pas-à pas (à l'intérieur ou à l'extérieur des API) pour te rendre compte de ce que tu fais et ce que les API font... Tu peux aussi suivre l'état de tes variables, des divers registres des flags...

Elle est pas belle la vie ?
Les tut de Yeohhs sont aussi un excellent moyen d'apprentissage.

Bon code !
__________________________
www.rosasm.org/
www.quanta-it.com/easbell/RosAsmForum

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM ASSEMBLEUR - FASM



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.