Assembleur 64 avec le compilateur nasm
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

La boite message

Aller en bas

La boite message Empty La boite message

Message par Admin Mar 6 Déc - 14:41

Nous avons déjà vu au début de ce tutoriel, l'affichage d'une boite de message. C'est la plus simple des boites proposées par l'API windows.
Voici un petit programme qui montre les différentes possibilités des boutons et d'icones. Il y a aussi d'autres options signalées dans la documentation sur Internet.
Vous pouvez voir qu'il est possible de gérer les réponses à des questions simples (oui,non,ressayer, cancel, abandon ).
Remarque : si les caractères accentués sont mal affichés, il faut vérifier l'encodage de votre source. Par exemple dans notepad+ la création d'un source n'est pas faite avec l'encodage ANSI mais avec l'encodage UTF8. Il faut donc le modifier par le menu Encodage avant de compiler.
Code:

;programme fenetre message windows en 64 bits
;messagebox1.asm
%include "../windowsinc64.inc"

section .data
szTitre:  db 'Fenêtre message', 0
szMsg:    db 'Voulez-vous continuer ?', 0
szMsgB1  db "Bouton 1",0
szMsgB2  db "Bouton 2",0
szMsgB3  db "Bouton 3",0

section .text
global Main

Main:
    sub rsp, 8h    ; alignement standard
    sub rsp, 20h    ; reserve 4 paramètres de 8 octets
    mov rcx, 0      ; handle  fenêtre
    lea rdx,[szMsg]    ; adresse du message
    lea r8,[szTitre]  ; adresse du titre de la fenêtre
    mov r9, MB_YESNOCANCEL|MB_ICONWARNING  |MB_DEFBUTTON2    ;  type du message : OK
    call MessageBoxA
   cmp rax,IDYES
   je .boutonoui
    cmp rax,IDNO
   je .boutonnon
   ; bouton cancel
   mov rcx, 0      ; handle  fenêtre
    lea rdx,[szMsgB3]    ; adresse du message
    lea r8,[szTitre]  ; adresse du titre de la fenêtre
    mov r9, MB_CANCELTRYCONTINUE|MB_ICONSTOP    ;  type du message : OK
    call MessageBoxA
   jmp .fin
.boutonoui:
   mov rcx, 0      ; handle  fenêtre
    lea rdx,[szMsgB1]    ; adresse du message
    lea r8,[szTitre]  ; adresse du titre de la fenêtre
    mov r9, MB_ABORTRETRYIGNORE|MB_ICONQUESTION    ;  type du message : OK
    call MessageBoxA
   jmp .fin
.boutonnon:
   mov rcx, 0      ; handle  fenêtre
    lea rdx,[szMsgB2]    ; adresse du message
    lea r8,[szTitre]  ; adresse du titre de la fenêtre
    mov r9, MB_YESNO|MB_ICONINFORMATION    ;  type du message : OK
    call MessageBoxA
   jmp .fin
.fin:   
    mov  rcx,rax    ; code retour avec le code retour de MessageBoxA
    call ExitProcess  ; fonction de fin du programme


Précision : l'option MB_DEFBUTTON2 permet de définir le bouton 2 comme le bouton par défaut. Nous pouvons la remplacer par MB_DEFBUTTON1 ou MB_DEFBUTTON3
Admin
Admin
Admin

Messages : 38
Date d'inscription : 28/11/2016

https://assembleur64.kanak.fr

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum