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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 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>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区二区三区在线| 国产精品视频你懂的| 久久精品国产一区二区| 亚洲男人的天堂在线aⅴ视频| 欧美v国产在线一区二区三区| 91精品国产欧美一区二区18| 91国在线观看| 色诱亚洲精品久久久久久| 国产成人精品午夜视频免费| 蜜桃视频一区二区三区在线观看| 亚洲三级电影网站| 国产精品久久国产精麻豆99网站| 久久夜色精品国产欧美乱极品| 56国语精品自产拍在线观看| 欧美日韩在线不卡| 国产精品 日产精品 欧美精品| 日本成人在线看| 一区在线观看免费| 日韩理论片中文av| 午夜久久电影网| 日韩av电影一区| 国产精品一品二品| 国产成人日日夜夜| 国产成人精品免费看| 成人av在线网| 91黄视频在线观看| 欧美高清视频不卡网| 9191久久久久久久久久久| 91麻豆精品国产91久久久久久久久 | 亚洲午夜久久久久久久久电影网| 91在线丨porny丨国产| 成人高清视频在线观看| 欧美精品xxxxbbbb| 欧美成人女星排行榜| 欧美极品少妇xxxxⅹ高跟鞋| 伊人性伊人情综合网| 丝袜脚交一区二区| 麻豆国产精品一区二区三区| 久久 天天综合| 一本久久精品一区二区| 国产精品灌醉下药二区| 国产精品视频一二三区| 中文字幕不卡一区| 一区二区三区 在线观看视频| 亚洲成人黄色影院| 免费美女久久99| 中文字幕精品一区二区三区精品| 伊人色综合久久天天人手人婷| 免费视频一区二区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲丝袜自拍清纯另类| 国产午夜精品久久久久久久 | 欧美国产日本视频| 亚洲视频精选在线| 国产精品综合一区二区三区| jiyouzz国产精品久久| 精品人在线二区三区| 亚洲欧美日韩精品久久久久| 首页欧美精品中文字幕| 在线亚洲高清视频| 久久久久国产一区二区三区四区 | 日韩一区二区在线看片| 国产精品电影一区二区| 亚洲欧美日韩国产手机在线| 国产呦精品一区二区三区网站| 色悠悠亚洲一区二区| 中文字幕精品一区二区精品绿巨人| 日韩视频在线永久播放| 亚洲图片激情小说| 风间由美中文字幕在线看视频国产欧美| 91国产丝袜在线播放| 欧美精彩视频一区二区三区| 日韩不卡在线观看日韩不卡视频| av色综合久久天堂av综合| 日本一区二区三区免费乱视频| 亚洲国产毛片aaaaa无费看| 久久er精品视频| 欧美一二三区在线| 亚洲成av人片在线观看| 欧美三片在线视频观看 | 专区另类欧美日韩| 在线播放国产精品二区一二区四区| 美女爽到高潮91| 亚洲精品国产第一综合99久久| 欧美精品少妇一区二区三区| 成人综合婷婷国产精品久久| 天天综合色天天| 国产高清精品在线| 日韩免费一区二区三区在线播放| 伊人一区二区三区| 成人午夜电影小说| 亚洲欧洲性图库| 国产精品996| 欧美一区二区三区在线电影| 亚洲在线视频一区| 欧美在线观看视频一区二区三区| 夜色激情一区二区| 91福利区一区二区三区| 亚洲国产高清在线| 色88888久久久久久影院野外 | 青青草视频一区| 91麻豆精品国产无毒不卡在线观看| 亚洲成av人在线观看| 欧美一级二级三级乱码| 美女视频黄 久久| 91精品久久久久久久91蜜桃| 国产福利一区二区三区视频 | 午夜a成v人精品| 欧美一区在线视频| 激情欧美日韩一区二区| 久久久久久久久久久久久女国产乱| 久久99精品久久久久久| 国产日韩欧美精品电影三级在线| 成人午夜在线视频| 夜夜揉揉日日人人青青一国产精品| 在线观看日产精品| 日韩影视精彩在线| 久久精品亚洲一区二区三区浴池| 美国三级日本三级久久99| 国产精品麻豆一区二区 | 日韩欧美中文字幕精品| 麻豆精品精品国产自在97香蕉| 久久久精品人体av艺术| 97久久超碰国产精品| 午夜精品久久一牛影视| 久久久影院官网| 欧亚一区二区三区| 黄色日韩网站视频| 一区二区三区精品视频| 日韩视频一区二区在线观看| 国产成人精品免费| 国产色产综合色产在线视频| 成人中文字幕在线| 成人欧美一区二区三区黑人麻豆| 欧美一区二区久久久| 2021久久国产精品不只是精品| 亚洲精品国产无天堂网2021| 成人小视频在线| 欧美美女一区二区在线观看| 亚洲四区在线观看| 成人久久视频在线观看| 国产精品污网站| 91精品福利视频| 紧缚奴在线一区二区三区| 日本欧美一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲综合另类小说| 欧美高清在线视频| 日韩精品一区二区三区视频播放| 色一区在线观看| 国产91精品免费| 高清不卡一二三区| 粉嫩欧美一区二区三区高清影视| 国产乱淫av一区二区三区| 久久精品国产**网站演员| 美女视频免费一区| 狠狠网亚洲精品| 国产精品白丝jk黑袜喷水| 国产成人午夜电影网| eeuss鲁一区二区三区| 色婷婷国产精品综合在线观看| 国产精品视频第一区| 亚洲午夜国产一区99re久久| 亚洲视频综合在线| 中文字幕欧美三区| 亚洲最色的网站| 亚洲天堂中文字幕| 亚洲欧美激情小说另类| www一区二区| 午夜激情一区二区三区| 欧美a一区二区| 亚洲综合成人网| 日韩在线播放一区二区| 亚洲成人综合在线| 不卡的av在线播放| 精品久久久久久最新网址| 精品播放一区二区| 亚洲欧洲一区二区三区| 精久久久久久久久久久| 奇米影视一区二区三区小说| 免费在线观看一区| 欧美老人xxxx18| 国产日韩欧美高清在线| 日本欧美肥老太交大片| 91精品中文字幕一区二区三区| 亚洲欧洲精品一区二区精品久久久 | 亚洲h在线观看| 欧美精品第1页| 久久国产日韩欧美精品| 精品成a人在线观看| 成人免费黄色大片| 国产精品免费久久| 久久精品国产久精国产| 欧美日韩综合在线免费观看| 天天色综合天天| 日韩欧美一区二区三区在线| 日韩国产高清在线| 国产午夜精品久久久久久久 | 在线综合+亚洲+欧美中文字幕| 日韩电影在线看|