begin process at 2012 05 25 12:14:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Forum general 80xxx

 > 

Problème de création de Dialog


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

Problème de création de Dialog

mardi 16 mars 2004 à 20:31:45 | Problème de création de Dialog

bni

Bonjour,

Suivant un tutoriel disponible sur le net, j'ai essayé de creer une boite de dialogue. Le seul problème, c'est qu'il n'y a qu'une console qui est lancée, mais pas de dialogue..

Voici la source (J'utilises TASM 5.0r) :



.386
.model flat, stdcall

include windows.inc

extrn GetModuleHandleA : PROC
extrn RegisterClassExA : PROC
extrn CreateWindowExA : PROC
extrn LoadIconA : PROC
extrn LoadCursorA : PROC
extrn ShowWindow : PROC
extrn UpdateWindow : PROC
extrn PostQuitMessage : PROC
extrn GetMessageA : PROC
extrn TranslateMessage : PROC
extrn DispatchMessageA : PROC
extrn DefWindowProcA : PROC
extrn ExitProcess : PROC

.data

msg MSGSTRUCT <?>
wc WNDCLASS <?>

hMain dd 0
hInst dd 0

ProgName db 'Dialog..',0
MainClass db 'd0',0

.code

start:
call GetModuleHandleA, 0 ; Get the Instance handle(module handle)
mov hInst, eax ; save here

mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW
mov [wc.clsLpfnWndProc], offset WndProc
mov [wc.clsCbClsExtra], 0
mov [wc.clsCbWndExtra], 0

mov eax, [hInst]
mov dword ptr [wc.clsHInstance], eax

call LoadIconA, 0, IDI_APPLICATION ; Load the icon for the application
mov dword ptr [wc.clsHIcon], eax ; save here

call LoadCursorA, 0, IDC_ARROW ; Load the cursor for the application
mov dword ptr [wc.clsHCursor], eax ; save here

mov [wc.clsHbrBackground], COLOR_WINDOW + 1
mov dword ptr [wc.clsLpszMenuName], 0
mov dword ptr [wc.clsLpszClassName], offset MainClass
push offset wc
call RegisterClassExA

call CreateWindowExA, 0, offset MainClass, offset ProgName, WS_VISIBLE OR WS_CAPTION OR WS_SYSMENU OR WS_THICKFRAME, 150,\ ; X position
150,\ ; Y position
500,\ ; width of the window
300,\ ; height of the window
0,\ ; handle to parent's window if exists
0,\ ; handle to the window's menu
hInst,\ ; the instance handle
0 ; lparam
mov hMain, eax ; save handle of window

call ShowWindow, hMain, SW_SHOWNORMAL
call UpdateWindow, hMain

msg_loop:
call GetMessageA, offset msg, 0, 0, 0
cmp ax, 0
je end_loop
call TranslateMessage, offset msg
call DispatchMessageA, offset msg
jmp msg_loop
end_loop:
call ExitProcess, 0

WndProc proc Hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
movzx eax, WORD PTR wmsg
.if eax == WM_DESTROY
jmp wmdestroy
.else
call DefWindowProcA, Hwnd, wmsg, wparam, lparam
jmp @@End
.endif
xor eax, eax
@@End:
ret

wmdestroy:
call PostQuitMessage, 0
xor eax, eax
ret
WndProc endp
public WndProc

end start



Merci d'avance pour votre aide.
(Désolé si le code est trop long)
mardi 16 mars 2004 à 20:39:27 | Re : Problème de création de Dialog

BruNews

Administrateur CodeS-SourceS
Regarde la doc du linker tasm que je ne connais pas.
Avec masm32 je mets:
...
...
Link.exe /nologo /SUBSYSTEM:WINDOWS.....

il y a surement un truc /SUBSYSTEM:WINDOWS ou de ce genre sur tasm.

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 16 mars 2004 à 20:48:48 | Re : Problème de création de Dialog

bni

Voici le fichier _combil.bat qui reprend les commandes de compilation (%1 = nom du fichier à titre informatif) :


tasm32 /ml /iE:\tasm\INCLUDE %1
tlink32 -x /Tpe /c %1,%1,, import32.lib,,


Normalement, le lien devrait être correct.. Et aucunes erreurs ou aucuns avertissement n'est signalé !
mardi 16 mars 2004 à 20:52:52 | Re : Problème de création de Dialog

BruNews

Administrateur CodeS-SourceS
http://www.movsd.com/
tu y trouveras MAM32, au moins il est fourni avec tout ce qu'il faut.

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 16 mars 2004 à 21:12:24 | Re : Problème de création de Dialog

bni

Avant de me tourner vers un autre assembleur, je voulais spécifier que je souhaites apprendre l'ASM le plus basique possible.. C'est à dire, sans simplification dû au compilateur.

Je me poses déjà la question de savoir si les instructions tel que .if ou .else (dans TASM en tout cas) font bien parties des bases de l'ASM..
mardi 16 mars 2004 à 21:41:30 | Re : Problème de création de Dialog

BruNews

Administrateur CodeS-SourceS
Pas besoin d'employer aucun sabir specifique et reconnu par tel assembleur. Je deconseille d'ailleurs totalement.
On ecrit un ASM conforme aux specs Intel dans MASM32 comme on peut employer le sabir si on se fout de toute optimisation.
Tu peux aller tranquille sur MASM32, c'est impec.
Tu mets cela en haut des fichiers:
.586 ; ou autre mais va bien ainsi
.model flat, stdcall
option casemap :none
option prologue:none
option epilogue:none
Et tu es certain qu'il n'insere rien a l'insu de ton plein gre.

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 16 mars 2004 à 21:44:26 | Re : Problème de création de Dialog

bni

Merci pour ces informations. Je vais donc tester MASM32 et décider quel assembleur je choisirais pour le futur..
Il est vrai que je vois beaucoup de monde utilisé MASM32.. à raison peut-être ;)


Cette discussion est classée dans : mov, wc, call, proc, extrn


Répondre à ce message

Sujets en rapport avec ce message

Ancien code - CreateWindowEx ne fonctionne pas [ par TehWan ] Je ne comprends vraiment pas pourquoi CreateWindowEx ne fonctionne pas. Je code en ancien code avec MASM32. J'ai même essayé la nouvelle syntaxe (invo prob de gestion de souris [débutant] [ par hagakure ] bonjour a vous tousvoila je suis débutant en asm, et je doi coder un jeu de combat naval, dont voici les règles :-le champ de mouillage est de 10 sur 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é les interruptions :( [ par yafuka ] Salut tt le monde..J'ai un petit probleme avec les interruptions. J'explique en quelques mots ce que j'essai de faire :J'aimerai tt simplement decreme une librairie [ par rhumsek ] slt mon prog contient une erreur d'après ma compilationje ne la voie pas pouvez vous m'aidé??TITLE Test de la librairieINCLUDE Irvine32.libCR=0DhLF=0A mon programme bloque [ par rhumsek ] slt j'ai améliore mon programme mais il provoque une erreure lorsdu calcul de la somme des entiers saisi (sommeentier)POURTANT il exécute bien les de 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 TSR & Détournement d'interrupt(ion) [ par ghuysmans99 ] bonjour à tous.j'ai fait un petit prog en asm 32bits pour dos mais il ne fonctionne pas ... reste à savoir pourquoi !!pourriez-vous m'aider ??;Change Probleme avec la pile et call [ par Mick7 ] Salut,Voila j'ai un probleme d'adresse de pile quand je fais appele a call affichage:  Main:     mov ax, 324     mov bx, 10  Boucle:     xor dx, dx   


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,952 sec (3)

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