⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sec-gdkevent.html

📁 GTK+_ Gnome Application Development
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html>  <head>    <title>      Events    </title>    <meta name="GENERATOR" content=    "Modular DocBook HTML Stylesheet Version 1.45">    <link rel="HOME" title="GTK+ / Gnome Application Development"    href="ggad.html">    <link rel="UP" title="GDK Basics" href="cha-gdk.html">    <link rel="PREVIOUS" title="Drawables and Pixmaps" href=     "sec-gdkdrawable.html">    <link rel="NEXT" title="The Mouse Pointer" href=     "sec-gdkcursor.html">  </head>  <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink=   "#840084" alink="#0000FF">    <div class="NAVHEADER">      <table width="100%" border="0" bgcolor="#ffffff" cellpadding=       "1" cellspacing="0">        <tr>          <th colspan="4" align="center">            <font color="#000000" size="2">GTK+ / Gnome Application            Development</font>          </th>        </tr>        <tr>          <td width="25%" bgcolor="#ffffff" align="left">            <a href="sec-gdkdrawable.html"><font color="#0000ff"            size="2"><b>&lt;&lt;&lt; Previous</b></font></a>          </td>          <td width="25%" colspan="2" bgcolor="#ffffff" align=           "center">            <font color="#0000ff" size="2"><b><a href="ggad.html">            <font color="#0000ff" size="2"><b>            Home</b></font></a></b></font>          </td>          <td width="25%" bgcolor="#ffffff" align="right">            <a href="sec-gdkcursor.html"><font color="#0000ff"            size="2"><b>Next &gt;&gt;&gt;</b></font></a>          </td>        </tr>      </table>    </div>    <div class="SECT1">      <h1 class="SECT1">        <a name="SEC-GDKEVENT">Events</a>      </h1>      <p>        <i class="FIRSTTERM">Events</i> are sent to your        application to indicate changes in a <span class=        "STRUCTNAME">GdkWindow</span> or user actions you might be        interested in. All events are associated with a <span        class="STRUCTNAME">GdkWindow</span>. They also come to be        associated with a <tt class="CLASSNAME">GtkWidget</tt>; the        GTK+ main loop passes events from GDK to the GTK+ widget        tree.      </p>      <div class="SECT2">        <h2 class="SECT2">          <a name="Z117">Types of Event</a>        </h2>        <p>          There are many kinds of events; the <span class=           "STRUCTNAME">GdkEvent</span> union can represent any of          them. A special event type, <span class="STRUCTNAME">          GdkEventAny</span>, contains the three fields common to          all events; any event can be cast to <span class=           "STRUCTNAME">GdkEventAny</span>. The first field in <span          class="STRUCTNAME">GdkEventAny</span> is a type marker,          <span class="STRUCTNAME">GdkEventType</span>; <span          class="STRUCTNAME">GdkEventType</span> is also included          in the <span class="STRUCTNAME">GdkEvent</span> union.          Confused yet? Seeing the code should help. Here is <span          class="STRUCTNAME">GdkEventAny</span>:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;struct _GdkEventAny{  GdkEventType type;  GdkWindow *window;  gint8 send_event;};&#13;</pre>            </td>          </tr>        </table>        <p>          and <span class="STRUCTNAME">GdkEvent</span>:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;union _GdkEvent{  GdkEventType              type;  GdkEventAny               any;  GdkEventExpose            expose;  GdkEventNoExpose          no_expose;  GdkEventVisibility        visibility;  GdkEventMotion            motion;  GdkEventButton            button;  GdkEventKey               key;  GdkEventCrossing          crossing;  GdkEventFocus             focus_change;  GdkEventConfigure         configure;  GdkEventProperty          property;  GdkEventSelection         selection;  GdkEventProximity         proximity;  GdkEventClient            client;  GdkEventDND               dnd;};&#13;</pre>            </td>          </tr>        </table>        <p>          Every event type has the three members of <span class=           "STRUCTNAME">GdkEventAny</span> as its first three          members. Thus, the <span class="STRUCTNAME">type</span>          of an event can be referred to in many ways (assume a          <span class="STRUCTNAME">GdkEvent*</span> called <span          class="STRUCTNAME">event</span>):        </p>        <ul>          <li>            <p>              <span class="STRUCTNAME">event-&gt;type</span>&#13;            </p>          </li>          <li>            <p>              <span class="STRUCTNAME">              event-&gt;any.type</span>&#13;            </p>          </li>          <li>            <p>              <span class="STRUCTNAME">              event-&gt;button.type</span>&#13;            </p>          </li>          <li>            <p>              <span class="STRUCTNAME">              ((GdkEventAny*)event)-&gt;type</span>&#13;            </p>          </li>          <li>            <p>              <span class="STRUCTNAME">              ((GdkEventButton*)event)-&gt;type</span>&#13;            </p>          </li>        </ul>        <p>          You'll probably see all these in GTK+ source code. Of          course, each event subtype has its own unique members;          the <span class="STRUCTNAME">type</span> field tells you          which subtype is valid.        </p>        <p>          The <span class="STRUCTNAME">window</span> field of <span          class="STRUCTNAME">GdkEventAny</span> is the <span class=           "STRUCTNAME">GdkWindow</span> the event was sent to. If          the <span class="STRUCTNAME">send_event</span> flag is          <span class="STRUCTNAME">TRUE</span>, then the event was          synthesized by another (or your own) application; if          <span class="STRUCTNAME">FALSE</span>, it originated with          the X server. GDK does not export the X interface for          sending events (<tt class="FUNCTION">XSendEvent()</tt>).          However, GTK+ often "makes up" an event by declaring a          static event struct, filling it in, then emitting the          event's corresponding widget signal. These synthesized          events will have <span class="STRUCTNAME">          send_event</span> set to <span class="STRUCTNAME">          TRUE</span>. <a href="sec-gdkevent.html#SEC-GTKEVENTS">          the section called <i>Receiving GDK Events in          GTK+</i></a> explains how GTK+ associates events with          widget signals.        </p>        <p>          There are more possible values for <span class=          "STRUCTNAME">GdkEventType</span> than there are members          in the <span class="STRUCTNAME">GdkEvent</span> union.          Many event types share the same data; for example, <span          class="STRUCTNAME">GDK_BUTTON_PRESS</span> and <span          class="STRUCTNAME">GDK_BUTTON_RELEASE</span> both use the          <span class="STRUCTNAME">button</span> member of <span          class="STRUCTNAME">GdkEvent</span>, since the same          information is conveyed when mouse buttons are pressed          and released. <a href="sec-gdkevent.html#TAB-EVENTTYPE">          Table 2</a> shows all possible values of the <span class=           "STRUCTNAME">GdkEventType</span> enumeration, and the          corresponding <span class="STRUCTNAME">GdkEvent</span>          member. The meaning of each event type is described later          in this section.        </p>        <div class="TABLE">          <a name="TAB-EVENTTYPE"></a>          <p>            <b>Table 2. <span class="STRUCTNAME">            GdkEventType</span> Values</b>          </p>          <table border="1" bgcolor="#E0E0E0" cellspacing="0"          cellpadding="4" class="CALSTABLE">            <tr>              <th align="LEFT" valign="TOP">                Value              </th>              <th align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEvent</span> Member              </th>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_NOTHING</span>              </td>              <td align="LEFT" valign="TOP">                none [PD] footnote!              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_DELETE</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventAny</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_DESTROY</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventAny</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_EXPOSE</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventExpose</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_MOTION_NOTIFY</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventMotion</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_BUTTON_PRESS</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventButton</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_2BUTTON_PRESS</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventButton</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_3BUTTON_PRESS</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventButton</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_BUTTON_RELEASE</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventButton</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_KEY_PRESS</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventKey</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_KEY_RELEASE</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventKey</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_ENTER_NOTIFY</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventCrossing</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_LEAVE_NOTIFY</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventCrossing</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_FOCUS_CHANGE</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventFocus</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_CONFIGURE</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventConfigure</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_MAP</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventAny</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_UNMAP</span>              </td>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GdkEventAny</span>              </td>            </tr>            <tr>              <td align="LEFT" valign="TOP">                <span class="STRUCTNAME">GDK_PROPERTY_NOTIFY</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -