亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? z147.html

?? gtk_text program sample&eg
?? HTML
?? 第 1 頁 / 共 4 頁
字號:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html>  <head>    <title>      An Example: The GtkEv Widget    </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="Writing a GtkWidget" href=    "cha-widget.html">    <link rel="PREVIOUS" title="The GtkWidget Base Class" href=     "z144.html">    <link rel="NEXT" title="GtkWidget In Detail" href=     "sec-widgetindetail.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="z144.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-widgetindetail.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="Z147">An Example: The <tt class="CLASSNAME">        GtkEv</tt> Widget</a>      </h1>      <p>        This section describes a very simple widget called <tt        class="CLASSNAME">GtkEv</tt>, inspired by the <tt class=         "APPLICATION">xev</tt> client that comes with X. <tt class=         "CLASSNAME">GtkEv</tt> has two components: a small        sub-window that receives events, and a larger window where        information about each event is reported. <a href=         "z147.html#FIG-GTKEV">Figure 1</a> shows <tt class=         "CLASSNAME">GtkEv</tt> in action. The complete <tt class=         "CLASSNAME">GtkEv</tt> source code is in Appendix E. <tt        class="CLASSNAME">GtkEv</tt> would be a lovely way to        implement an <tt class="APPLICATION">xev</tt>-style        application for Gnome; it packages the core application        functionality in a nice module.      </p>      <div class="FIGURE">        <a name="FIG-GTKEV"></a>        <p>          <img src="figures/gtkev.png">        </p>        <p>          <b>Figure 1. The <tt class="CLASSNAME">GtkEv</tt> widget.          Events are reported for the white subwindow.</b>        </p>      </div>      <div class="SECT2">        <h2 class="SECT2">          <a name="Z148">Overview</a>        </h2>        <p>          <tt class="CLASSNAME">GtkEv</tt> uses two <span class=           "STRUCTNAME">GdkWindow</span>s; the larger one, <tt          class="CLASSNAME">GtkEv</tt>'s <span class="STRUCTNAME">          widget-&gt;window</span>, has a gray background and is          used to render text describing each event. The smaller          one is a child of the primary window, and is the window          the widget reports events for.        </p>        <p>          Here are the class and instance structs for <tt class=           "CLASSNAME">GtkEv</tt>:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;typedef struct _GtkEv       GtkEv;typedef struct _GtkEvClass  GtkEvClass;struct _GtkEv{  GtkWidget widget;    GdkWindow*     event_window;  GdkRectangle   event_window_rect;  GdkRectangle   description_rect;  GList*         buffer;  GList*         buffer_end;  gint           buffer_size;};struct _GtkEvClass{  GtkWidgetClass parent_class;};      </pre>            </td>          </tr>        </table>        <p>          As you can see, <tt class="CLASSNAME">GtkEv</tt> has no          class functions or signals of its own. Each instance          stores a pointer to the small event window in <span          class="STRUCTNAME">event_window</span>. Two rectangles          cache the area covered by the event window, and the area          covered by the event description text. The widget's          allocation is divided between these two areas. Finally,          <tt class="CLASSNAME">GtkEv</tt> stores a list of string          vectors describing events; it caches the end of the list          and the length of the list. As events are received, text          describing them is pushed on to the front of the buffer.          When the list becomes too long to fit on the screen, <tt          class="CLASSNAME">GtkEv</tt> removes an event from the          back of the buffer each time it adds a new event to the          front, keeping the buffer size constant.        </p>      </div>      <div class="SECT2">        <h2 class="SECT2">          <a name="Z149"><span class="STRUCTNAME">GtkObject</span>          Features</a>        </h2>        <p>          Like all <span class="STRUCTNAME">GtkObject</span>s, <tt          class="CLASSNAME">GtkEv</tt> provides for its creation          and destruction.        </p>        <div class="SECT3">          <h3 class="SECT3">            <a name="Z150">Creation</a>          </h3>          <p>            <tt class="CLASSNAME">GtkEv</tt>'s init, class init,            and constructor functions are pure boilerplate and            should require no explanation; here they are, to help            you get oriented:          </p>          <table border="0" bgcolor="#E0E0E0" width="100%">            <tr>              <td><pre class="PROGRAMLISTING">&#13;static GtkWidgetClass *parent_class = NULL;guintgtk_ev_get_type (void){  static guint ev_type = 0;  if (!ev_type)    {      static const GtkTypeInfo ev_info =      {        "GtkEv",        sizeof (GtkEv),        sizeof (GtkEvClass),        (GtkClassInitFunc) gtk_ev_class_init,        (GtkObjectInitFunc) gtk_ev_init,        /* reserved_1 */ NULL,        /* reserved_2 */ NULL,        (GtkClassInitFunc) NULL,      };      ev_type = gtk_type_unique (gtk_widget_get_type (), &amp;ev_info);    }  return ev_type;}static voidgtk_ev_class_init (GtkEvClass *klass){  GtkObjectClass *object_class;  GtkWidgetClass *widget_class;  object_class = (GtkObjectClass*) klass;  widget_class = (GtkWidgetClass*) klass;  parent_class = gtk_type_class (gtk_widget_get_type ());  object_class-&gt;destroy = gtk_ev_destroy;  widget_class-&gt;realize = gtk_ev_realize;  widget_class-&gt;unrealize = gtk_ev_unrealize;  widget_class-&gt;size_request = gtk_ev_size_request;    widget_class-&gt;size_allocate = gtk_ev_size_allocate;    widget_class-&gt;draw = gtk_ev_draw;           widget_class-&gt;event = gtk_ev_event;    widget_class-&gt;draw_focus = gtk_ev_draw_focus;  widget_class-&gt;expose_event = gtk_ev_expose;      widget_class-&gt;focus_in_event = gtk_ev_focus_in;  widget_class-&gt;focus_out_event = gtk_ev_focus_out;}static voidgtk_ev_init (GtkEv *ev){  GTK_WIDGET_SET_FLAGS (GTK_WIDGET(ev), GTK_CAN_FOCUS);  ev-&gt;event_window = NULL;  ev-&gt;buffer       = NULL;  ev-&gt;buffer_end   = NULL;  ev-&gt;buffer_size  = 0;    ev-&gt;event_window_rect.x = ev-&gt;event_window_rect.y = 0;  ev-&gt;event_window_rect.width = ev-&gt;event_window_rect.height = 0;  ev-&gt;description_rect.x = ev-&gt;description_rect.y = 0;  ev-&gt;description_rect.width = ev-&gt;description_rect.height = 0;}GtkWidget*gtk_ev_new (void){  GtkEv *ev;  ev = gtk_type_new (gtk_ev_get_type ());  return GTK_WIDGET (ev);}    </pre>              </td>            </tr>          </table>        </div>        <div class="SECT3">          <h3 class="SECT3">            <a name="Z151">Destruction</a>          </h3>          <p>            <tt class="CLASSNAME">GtkEv</tt> overrides only the            <span class="STRUCTNAME">destroy</span> method from            <span class="STRUCTNAME">GtkObject</span>, to clean up            the event description buffer. The widget's windows will            be destroyed in <tt class="CLASSNAME">GtkWidget</tt>'s            shutdown method, which unrealizes the widget. <tt            class="CLASSNAME">GtkWidget</tt>'s finalize method            cleans up some <tt class="CLASSNAME">GtkWidget</tt>            resources and then chains to the <span class=            "STRUCTNAME">GtkObject</span> method which frees the            instance struct. (Refer to <a href=             "sec-finalization.html">the section called <i>Object            Finalization</i> in the chapter called <i>The GTK+            Object and Type System</i></a> for more details on            these methods.)          </p>          <p>            Because <tt class="CLASSNAME">GtkEv</tt> has no object            arguments, it does not need to implement <span class=             "STRUCTNAME">get_arg</span> or <span class=            "STRUCTNAME">set_arg</span> methods.          </p>          <p>            Here is its destroy method implementation:          </p>          <table border="0" bgcolor="#E0E0E0" width="100%">            <tr>              <td><pre class="PROGRAMLISTING">&#13;static void   gtk_ev_destroy       (GtkObject   *object){  GtkEv* ev;  GList* tmp;  g_return_if_fail(object != NULL);  g_return_if_fail(GTK_IS_EV(object));  ev = GTK_EV(object);  tmp = ev-&gt;buffer;  while (tmp != NULL)    {      g_strfreev((gchar**)tmp-&gt;data);            tmp = g_list_next(tmp);    }  g_list_free(ev-&gt;buffer);  ev-&gt;buffer = NULL;  ev-&gt;buffer_end = NULL;  ev-&gt;buffer_size = 0;  /* Chain up */  if (GTK_OBJECT_CLASS(parent_class)-&gt;destroy)    (* GTK_OBJECT_CLASS(parent_class)-&gt;destroy) (object);}    </pre>              </td>            </tr>          </table>          <p>            The only detail worthy of note is that freed pointers            are set to <span class="STRUCTNAME">NULL</span>,            because a destroyed object should remain "sane," unlike            a finalized object. The <tt class="CLASSNAME">            GtkEv</tt> code depends on the fact that destroyed            widgets are always unrealized; otherwise, text could be            re-added to the buffer after destruction but before            finalization, and a finalize method would be required.          </p>        </div>      </div>      <div class="SECT2">        <h2 class="SECT2">          <a name="Z152">Realization and Mapping</a>        </h2>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
|精品福利一区二区三区| 欧美成人精品高清在线播放| 波波电影院一区二区三区| 国产成人aaaa| 国产精品一二一区| 成人一级视频在线观看| 成人小视频在线| 99国产精品一区| 一本一道综合狠狠老| 色94色欧美sute亚洲线路二| 91精品1区2区| 91精品国产综合久久国产大片| 丁香婷婷综合五月| 亚洲一区二区三区精品在线| 亚洲久草在线视频| 亚洲欧美日韩一区二区| 亚洲一区二区高清| 肉丝袜脚交视频一区二区| 免费成人性网站| 国产成人av一区二区三区在线 | 7777精品伊人久久久大香线蕉超级流畅| 欧美性受xxxx| 91精品国产乱| 久久久av毛片精品| 自拍偷拍亚洲欧美日韩| 性久久久久久久久久久久| 另类小说欧美激情| 福利一区福利二区| 国产精品黄色在线观看| 亚洲品质自拍视频| 欧美日韩一区二区电影| 欧美性一区二区| 日韩欧美国产综合一区| 国产亚洲婷婷免费| 有码一区二区三区| 理论电影国产精品| 成人激情免费电影网址| 欧美午夜精品久久久久久孕妇| 91精品在线麻豆| 欧美国产精品劲爆| 午夜久久电影网| 国产成人免费在线观看不卡| 欧美日韩中文一区| 国产日韩精品一区二区三区在线| 一区二区三区中文字幕| 国内精品伊人久久久久av一坑 | 在线免费观看日本欧美| 欧美成人伊人久久综合网| 中文字幕不卡的av| 图片区小说区区亚洲影院| 国产成人亚洲精品青草天美| 欧美综合一区二区三区| 国产人久久人人人人爽| 亚洲va国产天堂va久久en| 丁香一区二区三区| 日韩午夜av电影| 一区二区三区.www| 成人午夜碰碰视频| 日韩欧美激情在线| 亚洲午夜激情av| 成人做爰69片免费看网站| 91精品国产福利在线观看| 亚洲欧美中日韩| 精品一区二区三区免费观看| 91福利在线免费观看| 国产精品欧美一区喷水| 精品一区二区在线视频| 欧美调教femdomvk| 最好看的中文字幕久久| 国产成人免费视频网站高清观看视频 | 狠狠色丁香久久婷婷综| 欧美日韩成人激情| 亚洲男同1069视频| 粉嫩高潮美女一区二区三区| 欧美大片顶级少妇| 婷婷久久综合九色综合伊人色| 色婷婷综合激情| 综合亚洲深深色噜噜狠狠网站| 国内成+人亚洲+欧美+综合在线| 91.com在线观看| 亚洲成人三级小说| 色乱码一区二区三区88| 国产精品久久久久婷婷二区次| 韩国精品主播一区二区在线观看| 亚洲免费观看高清完整版在线观看熊| 国产成人免费av在线| 久久嫩草精品久久久精品| 九九视频精品免费| 欧美一区二区视频网站| 天天影视涩香欲综合网| 欧美天天综合网| 亚洲一级二级在线| 欧美在线播放高清精品| 一区二区三国产精华液| 91日韩在线专区| 日韩伦理免费电影| 成人免费视频一区| 国产精品视频麻豆| 成人午夜看片网址| 国产精品伦理一区二区| 99久久国产综合精品女不卡| **网站欧美大片在线观看| www.日本不卡| 亚洲欧美国产三级| 在线观看欧美精品| 亚洲午夜久久久久久久久电影网| 欧美制服丝袜第一页| 亚洲国产成人av网| 欧美精品三级在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 欧美r级在线观看| 国产乱对白刺激视频不卡| 久久久亚洲精品石原莉奈| 国产九色sp调教91| 国产精品国产三级国产普通话蜜臀| 不卡电影一区二区三区| 亚洲精品成人天堂一二三| 在线免费一区三区| 免费高清视频精品| 久久夜色精品国产噜噜av| 国产福利电影一区二区三区| 国产精品美女视频| 91黄色小视频| 视频一区视频二区中文| 欧美大片国产精品| 成人免费视频视频| 亚洲国产另类av| 日韩精品一区二区三区蜜臀| 国产成人精品影视| 亚洲在线视频网站| 欧美成人综合网站| 99精品热视频| 日韩不卡一区二区| 国产视频一区二区在线观看| 99re成人精品视频| 青青草原综合久久大伊人精品优势| 久久网站热最新地址| 93久久精品日日躁夜夜躁欧美| 偷窥国产亚洲免费视频| 国产欧美视频一区二区| 欧美在线观看视频一区二区| 九色综合国产一区二区三区| 亚洲免费观看高清完整版在线| 制服丝袜日韩国产| 成人动漫视频在线| 午夜激情久久久| 国产精品色一区二区三区| 欧美日韩免费观看一区二区三区| 国产一区在线不卡| 亚洲成av人片在www色猫咪| 久久亚洲综合色| 欧美在线制服丝袜| 国产成人精品免费在线| 天天色综合成人网| 亚洲国产高清不卡| 欧美一区二区二区| 97久久精品人人澡人人爽| 美女精品自拍一二三四| 亚洲欧洲制服丝袜| 久久久99免费| 欧美一区二区久久| 色菇凉天天综合网| 成人综合婷婷国产精品久久蜜臀 | 91在线无精精品入口| 激情综合网av| 亚洲成人午夜影院| 中文字幕日韩一区| 26uuu亚洲| 欧美视频中文字幕| 夫妻av一区二区| 国内精品嫩模私拍在线| 亚洲成人动漫在线免费观看| 国产精品欧美极品| 精品国产一区二区在线观看| 欧美性视频一区二区三区| 99久久免费视频.com| 国内精品伊人久久久久av一坑| 日日欢夜夜爽一区| 一区二区不卡在线视频 午夜欧美不卡在 | 国产偷v国产偷v亚洲高清| 欧美一区二区三区四区久久| 91国模大尺度私拍在线视频| 成人在线视频一区二区| 狠狠色丁香婷婷综合| 免费成人在线网站| 日本欧美在线看| 亚洲aaa精品| 一区二区三区**美女毛片| 亚洲色欲色欲www| 亚洲国产成人在线| 久久天天做天天爱综合色| 日韩午夜av一区| 在线观看91av| 欧美在线视频不卡| 91福利国产成人精品照片| 在线一区二区三区做爰视频网站| 91蝌蚪porny| 色综合天天综合网国产成人综合天 | 色一区在线观看| 91蝌蚪porny九色|