source: trunk/third/gtk/docs/html/gtk_tut_fr-15.html @ 14482

Revision 14482, 4.6 KB checked in by ghudson, 25 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14481, which included commits to RCS files with non-trunk default branches.
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2<HTML>
3<HEAD>
4 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
5 <TITLE>Didacticiel: Temporisations, fonctions d'E/S et d'attente</TITLE>
6 <LINK HREF="gtk_tut_fr-16.html" REL=next>
7 <LINK HREF="gtk_tut_fr-14.html" REL=previous>
8 <LINK HREF="gtk_tut_fr.html#toc15" REL=contents>
9</HEAD>
10<BODY BGCOLOR="#FFFFFF">
11<A HREF="gtk_tut_fr-16.html">Page suivante</A>
12<A HREF="gtk_tut_fr-14.html">Page précédente</A>
13<A HREF="gtk_tut_fr.html#toc15">Table des matières</A>
14<HR NOSHADE>
15<H2><A NAME="sec_timeouts"></A> <A NAME="s15">15. Temporisations, fonctions d'E/S et d'attente</A></H2>
16
17<P>
18<H2><A NAME="ss15.1">15.1 Temporisations</A>
19</H2>
20
21<P>Vous pouvez vous demander comment faire pour que GTK fasse quelque
22chose d'utile lorsqu'il est dans <EM>gtk_main</EM>. En fait, on a
23plusieurs options. L'utilisation des fonctions suivantes permet de
24créer une temporisation qui sera appelée tous les
25<EM>interval</EM> millisecondes.
26<P>
27<BLOCKQUOTE><CODE>
28<PRE>
29gint gtk_timeout_add (guint32 interval,
30                      GtkFunction function,
31                      gpointer data);
32</PRE>
33</CODE></BLOCKQUOTE>
34<P>Le premier paramètre est le nombre de millisecondes entre les appels à
35notre fonction. Le deuxième est la fonction à appeler et le troisième
36est la donnée passée à cette fonction de rappel. La valeur retournée
37est un « marqueur » de type entier qui pourra être utilisé pour
38arrêter la temporisation en appelant&nbsp;:
39<P>
40<BLOCKQUOTE><CODE>
41<PRE>
42void gtk_timeout_remove (gint tag);
43</PRE>
44</CODE></BLOCKQUOTE>
45<P>On peut aussi stopper la fonction de temporisation en faisant
46retourner zéro ou FALSE à notre fonction de rappel. Évidemment, cela
47veut dire que si vous voulez que votre fonction continue à être
48appelée, elle doit retourner une valeur non nulle, ou TRUE.
49<P>La déclaration de votre fonction de rappel doit ressembler à ça&nbsp;:
50<P>
51<BLOCKQUOTE><CODE>
52<PRE>
53gint timeout_callback (gpointer data);
54</PRE>
55</CODE></BLOCKQUOTE>
56<P>
57<H2><A NAME="ss15.2">15.2 Surveillance des E/S</A>
58</H2>
59
60<P>Une autre caractéristique intéressante du GTK est la possibilité de
61vérifier les données d'un descripteur de fichier (celles retournées
62par <EM>open</EM>(2) ou <EM>socket</EM>(2)). C'est particulièrement pratique pour les
63applications réseau. La fonction suivante permet cette
64vérification&nbsp;:
65<P>
66<BLOCKQUOTE><CODE>
67<PRE>
68gint gdk_input_add (gint source,
69                    GdkInputCondition condition,
70                    GdkInputFunction  function,
71                    gpointer data);
72</PRE>
73</CODE></BLOCKQUOTE>
74<P>Le premier paramètre est le descripteur de fichier que l'on veut
75étudier, le second spécifie ce qu'on veut que le GDK recherche. Cela
76peut être&nbsp;:
77<P>GDK_INPUT_READ - Appel <EM>function</EM> lorsqu'il y a une donnée prête à
78être lue dans le descripteur de fichier.
79<P>GDK_INPUT_WRITE - Appel de <EM>function</EM> lorsque le descripteur de
80fichier est prêt pour une écriture.
81<P>Je suis sûr que vous vous doutez, maintenant, que le troisième
82paramètre est la fonction que l'on veut appeler lorsque les conditions
83ci-dessus sont satisfaites. Le dernier paramètre est la donnée à
84passer à cette fonction.
85<P>La valeur retournée est un marqueur qui pourra être utilisé pour dire
86au GDK de cesser de surveiller ce descripteur à l'aide de la fonction&nbsp;:
87<P>
88<BLOCKQUOTE><CODE>
89<PRE>
90void gdk_input_remove (gint tag);
91</PRE>
92</CODE></BLOCKQUOTE>
93<P>La fonction de rappel doit être déclarée de la façon suivante&nbsp;:
94<P>
95<BLOCKQUOTE><CODE>
96<PRE>
97void input_callback (gpointer data, gint source,
98                     GdkInputCondition condition);
99</PRE>
100</CODE></BLOCKQUOTE>
101<P>
102<P>
103<H2><A NAME="ss15.3">15.3 Fonctions d'attente</A>
104</H2>
105
106<P>Que se passe-t'il si vous avez une fonction qui doit être appelée
107lorsque rien d'autre ne se passe ? On utilise la fonction suivante qui force
108GTK à appeler <EM>function</EM> lorsqu'on est en phase d'inaction&nbsp;;
109<P>
110<BLOCKQUOTE><CODE>
111<PRE>
112gint gtk_idle_add (GtkFunction function,
113                   gpointer data);
114</PRE>
115</CODE></BLOCKQUOTE>
116<P>
117<BLOCKQUOTE><CODE>
118<PRE>
119void gtk_idle_remove (gint tag);
120</PRE>
121</CODE></BLOCKQUOTE>
122<P>Je n'expliquerai pas la signification des paramètres car ils
123ressemblent beaucoup à ceux déjà vus ci-dessus. La fonction pointée
124par le premier paramètre de <EM>gtk_idle_add()</EM> sera appelée à chaque
125occasion. Comme pour les autres, retourner FALSE empêchera la fonction
126d'attente d'être appelée.
127<P>
128<HR NOSHADE>
129<A HREF="gtk_tut_fr-16.html">Page suivante</A>
130<A HREF="gtk_tut_fr-14.html">Page précédente</A>
131<A HREF="gtk_tut_fr.html#toc15">Table des matières</A>
132</BODY>
133</HTML>
Note: See TracBrowser for help on using the repository browser.