Faire apparaître un bouton OK avec gtk

Introduction

De la même façon que l'on a fait apparaître 'hello world' dans une fenêtre graphique avec gtk, faisons apparaître un bouton à cliquer 'OK'.
Attention, ici l'action du clic n'est pas définie.


Créer le programme boutonOK.asm

section .data
window_title db 'Cliquez-moi', 0
button_label db 'OK', 0

section .text
global main
extern gtk_init, gtk_main, gtk_widget_show_all, gtk_window_new, gtk_window_set_title, gtk_button_new_with_label, gtk_container_add

main:
; Initialiser GTK
push rbp
mov rbp, rsp
sub rsp, 16
mov qword [rbp-16], 0 ; argc
mov qword [rbp-8], 0 ; argv
lea rdi, [rbp-16] ; argc
lea rsi, [rbp-8] ; argv
call gtk_init

; Créer la fenêtre
mov edi, 0 ; GTK_WINDOW_TOPLEVEL
call gtk_window_new
mov rbx, rax ; Sauvegarder le pointeur de fenêtre

; Définir le titre de la fenêtre
mov rdi, rbx
mov rsi, window_title
call gtk_window_set_title

; Créer le bouton
mov rdi, button_label
call gtk_button_new_with_label
mov r12, rax ; Sauvegarder le pointeur du bouton

; Ajouter le bouton à la fenêtre
mov rdi, rbx
mov rsi, r12
call gtk_container_add

; Afficher la fenêtre
mov rdi, rbx
call gtk_widget_show_all

; Exécuter la boucle principale de GTK
call gtk_main

; Nettoyer la pile
leave
ret

section .note.GNU-stack noalloc noexec nowrite progbits

Assembler

nasm -f elf64 boutonOK.asm -o boutonOK.o

Linker

gcc -o boutonOK boutonOK.o `pkg-config --cflags --libs gtk+-3.0`

Lancer le programme

./boutonOK


↑ Haut de page