La boite selection de couleurs

Voir le sujet précédent Voir le sujet suivant Aller en bas

La boite selection de couleurs

Message par Admin le Mar 6 Déc - 19:01

Suivant le même principe que la boite précédente, nous disposons d'une fonction pour choisir une couleur ChooseColorA qui utilise comme paramètre la structure CHOOSECOLOR.
La couleur choisie est récupéré dans le registre RAX sur les 3 octets de poids faibles (voir le codage RGB)
FF0000 représente le bleu 0000FF le rouge et 00FF00 le vert.
Code:

;--choixCouleur.asm programme 64 bits
; Fenêtre de Choix des couleur

%include "../windowsinc64.inc"

;=======================================
; segment des données initialisées
;=======================================
segment .data

szMessFin  db 10,13,"Fin du programme.",0
szRetourLigne db 10,13,0
szMessdepassement db "Valeur du choix = %p ",10,13,0

color  istruc CHOOSECOLOR
iend
LGCOLOR equ $ - color


;=======================================
; segment des données non initialisées
;=======================================
segment .bss
hMain  resq 1

szResult  resb 100
acrCustClr  resq 16
 
;=======================================
; segment de code
;=======================================
segment .text
    global Main
   extern afferreur,affconsoleP,affmessage,saisieClavier

Main:
    sub rsp, 8h    ; alignement de la pile avant tout appel de procédure
   sub rsp,20h
    ;recup handle de l'instance du programme
   mov  rcx,NULL
   call GetModuleHandleA
   mov r9,__LINE__ - 1
   cmp  eax,NULL
   je  .erreur
   mov [hMain],rax
    mov  qword[color+CHOOSECOLOR.lStructSize],LGCOLOR  ; longueur structure
   mov  qword[color+CHOOSECOLOR.hwndOwner],NULL    ; pas de fenêtre maitre
   mov  qword[color+CHOOSECOLOR.lpCustColors],acrCustClr  ; Couleurs complémentaires personelles
   mov  qword[color+CHOOSECOLOR.Flags], CC_FULLOPEN  ; permet de creer des couleurs complémentaires
    mov rcx, color    ; passage de la structure
    call ChooseColorA  ;appel de la fonction.
   mov r9,__LINE__ - 1
   cmp  rax,NULL
   je .erreur
   ;mov ax,[color+CHOOSECOLOR.rgbResult]   
;exemple utilisation wsprintfa
    mov rcx,szResult
   mov rdx,szMessdepassement
   mov r8,[color+CHOOSECOLOR.rgbResult]  ; couleur choisie
   call wsprintfA
   mov r9,__LINE__ - 1
   cmp  eax,NULL
   je  .erreur
    push szResult
    call affconsoleP   ; affichage dans la console
   mov rax,0
   jmp .main_fin
.erreur:
   call afferreur
   mov  rax,1
   jmp .fin
.main_fin:   
    push szMessFin
   call affconsoleP
   call saisieClavier
.fin:   
   mov  rcx,rax          ; code retour
   call ExitProcess  ; fin du programme

avatar
Admin
Admin

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

Voir le profil de l'utilisateur http://assembleur64.forumactif.com

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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