IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

gerald3d

[GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran

Noter ce billet
par , 22/03/2015 à 22h55 (1208 Affichages)
Bonjour à toutes et à tous.

Je me lance dans ce nouvel outil qu'est le blog. J'ai décidé de l'utiliser pour concentrer ici quelques codes sources que j'écris pour répondre à certaines questions plus ou moins particulières.

Donc, pour ce premier billet vous trouverez ci-après le code exemple pour récupérer les coordonnées en temps réel de la souris sur l'écran. Ce n'est peut être pas la solution idéale, mais elle a le mérite d'exister :

Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdlib.h>
#include <gtk/gtk.h>
 
typedef struct
{
  GtkWidget *coordx, *coordy;
} SCoord;
 
gboolean
g_callback_draw (GtkWidget    *widget, cairo_t *cr, SCoord *coord)
{
  GdkWindow *root = NULL;
  gint x, y;
 
  // Récupération de la fenêtre root
  root = gdk_get_default_root_window ();
  if (root==NULL) g_printerr ("root = NULL !!!");
 
  // Récupération du pointeur de la souris
  GdkDevice *pointer = gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (gdk_window_get_display (root)));
 
  // Récupération des coordonnées de la souris
  gdk_window_get_device_position (root, pointer, &x, &y, NULL);
 
  // Mise à jour des GtkLabel pour afficher les coordonnées.
  gchar *text_x = g_strdup_printf("%d", x);
  gchar *text_y = g_strdup_printf("%d", y);
  gtk_label_set_text (GTK_LABEL (coord->coordx), text_x);
  gtk_label_set_text (GTK_LABEL (coord->coordy), text_y);
  g_free(text_x);
  g_free(text_y);
 
  return FALSE;
}
 
int
main(int argc, char** argv)
{
  GtkWidget *window = NULL;
  GtkWidget *grid = NULL;
  GtkWidget *label = NULL;
  SCoord coord;
 
  // Initialisation gtk
  gtk_init(&argc, &argv);
 
  // Creation fenetre
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window), "Test capture évènements souris");
  gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
 
  // Connexion du signal "destroy" pour fermer l'application
  g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
  // Création d'une grille pour afficher les coordonnées de la souris en temps réel.
  grid = gtk_grid_new ();
  gtk_container_add (GTK_CONTAINER(window), grid);
 
  label = gtk_label_new ("coordonnées souris :");
  gtk_grid_attach (GTK_GRID(grid), label, 0, 0, 4, 1);
  label = gtk_label_new (",");
  gtk_grid_attach (GTK_GRID(grid), label, 1, 1, 1, 1);
 
  coord.coordx = gtk_label_new ("0");
  gtk_grid_attach (GTK_GRID(grid), coord.coordx, 0, 1, 1, 1);
 
  coord.coordy = gtk_label_new ("0");
  gtk_grid_attach (GTK_GRID(grid), coord.coordy, 2, 1, 1, 1);
 
  // Connexion du signal "draw". Dans ce callback on va pouvoir accéder à la fenêtre root
  g_signal_connect(G_OBJECT(window), "draw", G_CALLBACK(g_callback_draw), &coord);
 
  // Affichage de tout
  gtk_widget_show_all(window);
 
  gtk_main();
 
  return EXIT_SUCCESS;
}

Envoyer le billet « [GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran » dans le blog Viadeo Envoyer le billet « [GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran » dans le blog Twitter Envoyer le billet « [GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran » dans le blog Google Envoyer le billet « [GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran » dans le blog Facebook Envoyer le billet « [GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran » dans le blog Digg Envoyer le billet « [GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran » dans le blog Delicious Envoyer le billet « [GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran » dans le blog MySpace Envoyer le billet « [GTK+ v3.0] Récupérer les coordonnées de la souris sur l'écran » dans le blog Yahoo

Mis à jour 01/02/2018 à 12h36 par gerald3d

Catégories
Programmation , C

Commentaires