Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : MASM - Petite question DlgProc proc [ Archives / Newbii ] (n_o_u_n_o_u)

jeudi 24 novembre 2005 à 20:28:21 | MASM - Petite question DlgProc proc

n_o_u_n_o_u

Bonjour,

je continue ma découverte de MASM et j'ai encore une question...

Voici un extrait du code que j'ai placé dan DlgProc proc :
...
   .if dx==BN_CLICKED
    invoke GetDlgItemText,hWin, IDC_EDT1, ADDR tempo, 512
       .if ax==IDC_BTN1
           invoke SetDlgItemText,hWin, IDC_EDT2, ADDR tempo
       .elseif ax==IDC_BTN2
           invoke MessageBox,hWin, ADDR tempo, ADDR tempo, MB_OK
       .endif
   .endif
...

Cela ne fonctionne pas, alors que le code ci-dessous fonctionne :
...
   .if dx==BN_CLICKED
       .if ax==IDC_BTN1
           invoke GetDlgItemText,hWin, IDC_EDT1, ADDR tempo, 512
           invoke SetDlgItemText,hWin, IDC_EDT2, ADDR tempo
       .elseif ax==IDC_BTN2
           invoke GetDlgItemText,hWin, IDC_EDT1, ADDR tempo, 512
           invoke MessageBox,hWin, ADDR tempo, ADDR tempo, MB_OK
       .endif
   .endif
...

Je ne comprends pas du tout pourquoi le premier code ne fonctionne pas. Il semble pourtant correct, non ?


jeudi 24 novembre 2005 à 20:41:46 | Re : MASM - Petite question DlgProc proc

BruNews

Administrateur CodeS-SourceS
BN_CLICKED vaut 0
donc en asm test de nullité s'écrit
test dx, dx
je VautZero

Comment se fait-il que tu travailles sur des registres 16 bits dans un prog Win ???
Depuis le pentium tout accès 16 bits souffre de cycle de pénalité, registres 32 et 8 non alors évite ce code.

Comme tu as l'air de commencer, évite aussi ce sabir, pas ainsi que tu connaitras l'asm. Ne pas oublier que l'asm est employé pour optimisation maxi et pas avec ça que tu l'auras, un compilo C moderne te battra sans problème à tout coup. Si tu veux te mettre à l'asm alors écris de l'asm, c'est tout à fait possible sur MASM32.

ciao...
[ Lien ]
BruNews, MVP VC++

jeudi 24 novembre 2005 à 22:04:14 | Re : MASM - Petite question DlgProc proc

patatalo

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
salut, dans le premier cas, invoke GetDlgItemText,hWin, IDC_EDT1, ADDR tempo, 512 ecrase la valeur de eax pour retourner la taille du texte copié et donc eax n'as pas du tout la meme valeur dans le cas 1 et dans le cas 2. dans le cas 1, le test devrait etre: invoke GetDlgItemText,hWin, IDC_EDT1, ADDR tempo, 512 .if eax==512 invoke MessageBox,0,"Waooo, le buffer est plein !!!","infos",MB_OK .endif @++

jeudi 24 novembre 2005 à 23:11:08 | Re : MASM - Petite question DlgProc proc

n_o_u_n_o_u

Merci pour vos réponses.



Cette discussion est classé dans : tempo, idc, addr, invoke, hwin


Répondre à ce message

Sujets en rapport avec ce message

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. Déplacer pointeur [ par DeAtHCrAsH ] Je dispose d'une variable défini comme cela :var1 dd 256 dup(?)A l'interieur j'y stocke des adresses mémoiresAinsi pour les afficher ensuite je fais : tempo avec un 15F [ par tshib ] Slt à tous ne bref je débute en assembleur et je voudrai avoir la résolution de l'exercice suivant: j'ai un codes qui foire et je voudrai avoir le ver décompter une variable sous fasmw [ par palyer ] bonjour.j ai commencé la programmation sous fasmw156 récement et j aurai besoin d aide pour un probleme tout bete :je cherche a pouvoir decrementer un GetUserName champs vide [ par VBFRANCE ] J'ai un petit soucis avec la fonction GetUserName, celle-ci me retourne une string vide, le soucis et egalement present avec la fonction GetComputerNa Aidez moi à traduire une petite fonction assembleur en C (API Windows) [ par skirby ] Bonjour à tous, J'essaye désespérément de traduire une fonction ASM en C. Le but de cette fonction est de pouvoir utiliser une ressource compilé dans Un peut d'aide pour une messagebox... [ par zerolol ] SalutVoila je cherche un autre facon de créé une messagebox autre que ceci... invoke MessageBox, NULL,addr MsgBoxText2, addr MsgCaption2, MB_OKCANCELc 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 Directive Invoke [ par bazole ] BonjourJ'étudie la possibilité de créer un petit assembleur sous windows, et j'ai du mal à comprendre comment faire appel à une API windows.Sous Masm, probleme avec mes variables local [ par cricri_b34 ] salut, j'ai une procedure qui utilise 2 variable local :myFTPListFile procLOCAL SRec:WIN32_FIND_DATALOCAL hFind:HANDLE   .if (hFTP!=0)   invoke FtpFin


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.