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

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

?? z147.html

?? gtk_text program sample&eg
?? HTML
?? 第 1 頁 / 共 4 頁
字號:
  if (GTK_WIDGET_HAS_FOCUS (widget))    {      gtk_paint_focus (widget-&gt;style, widget-&gt;window,                       area, widget, "ev",                       widget-&gt;allocation.x, widget-&gt;allocation.y,                        widget-&gt;allocation.width-1, widget-&gt;allocation.height-1);    }}      </pre>            </td>          </tr>        </table>        <p>          Most of <tt class="FUNCTION">gtk_ev_paint()</tt> is <tt          class="CLASSNAME">GtkEv</tt>-specific; it simply draws          the contents of the window. Notice that it checks <tt          class="FUNCTION">GTK_WIDGET_DRAWABLE()</tt> at the          beginning; this is required because the draw method may          invoke the function. Unsynthesized expose events          guarantee that a widget's X window is on-screen and thus          this check is not really necessary when responding to          expose events.        </p>        <p>          <tt class="FUNCTION">gtk_ev_paint_event_window()</tt>          paints the small subwindow; it's a very simple function:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;static void gtk_ev_paint_event_window  (GtkEv            *ev,                            GdkRectangle     *area){  GtkWidget* widget;  gint width;  gint x, y;  const char* title;  g_return_if_fail(ev != NULL);  g_return_if_fail(GTK_IS_EV(ev));  widget = GTK_WIDGET(ev);  if (!GTK_WIDGET_DRAWABLE (widget))    return;  title = _("Event Window");  gdk_window_clear_area (ev-&gt;event_window,                         area-&gt;x,                          area-&gt;y,                         area-&gt;width,                          area-&gt;height);  gdk_gc_set_clip_rectangle(widget-&gt;style-&gt;black_gc, area);  /* Clearly it would be better to cache this */  width = gdk_string_width(widget-&gt;style-&gt;font,                           title);  x = (ev-&gt;event_window_rect.width - width)/2;  y = widget-&gt;style-&gt;font-&gt;ascent + 2;  gdk_draw_string(ev-&gt;event_window,                  widget-&gt;style-&gt;font,                  widget-&gt;style-&gt;black_gc,                  x, y,                   title);  gdk_gc_set_clip_rectangle(widget-&gt;style-&gt;black_gc, NULL);}      </pre>            </td>          </tr>        </table>      </div>      <div class="SECT2">        <h2 class="SECT2">          <a name="Z153">Handling Focus</a>        </h2>        <p>          <tt class="CLASSNAME">GtkEv</tt> wants to receive key          press events so it can report information about them. As          discussed in <a href="z57.html#SEC-FOCUSWIDGET">the          section called <i>Focus</i> in the chapter called <i>GTK+          Basics</i></a> and <a href=           "sec-gdkevent.html#SEC-GDKKEYFOCUS">the section called          <i>Keyboard Focus</i> in the chapter called <i>GDK          Basics</i></a>, only toplevel windows receive key events          from GDK. <tt class="CLASSNAME">GtkWindow</tt> keeps          track of a current <i class="FIRSTTERM">focus widget</i>          and forwards key events to it.        </p>        <p>          If a widget wants to receive key events, it must:        </p>        <ul>          <li>            <p>              Set its <span class="STRUCTNAME">GTK_CAN_FOCUS</span>              flag, so GTK+ will consider it as a possible focus              widget.            </p>          </li>          <li>            <p>              Respond to <span class="SYMBOL">"focus_in"</span> and              <span class="SYMBOL">"focus_out"</span> signals by              drawing and erasing a visual indication that it has              the focus.            </p>          </li>        </ul>        <p>          <tt class="CLASSNAME">GtkEv</tt> set the <span class=           "STRUCTNAME">GTK_CAN_FOCUS</span> flag in <tt class=           "FUNCTION">gtk_ev_init()</tt>; it implements focus in and          focus out methods as follows:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;static gint gtk_ev_focus_in       (GtkWidget        *widget,                       GdkEventFocus    *event){  g_return_val_if_fail(widget != NULL, FALSE);  g_return_val_if_fail(GTK_IS_EV(widget), FALSE);  GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);  gtk_widget_draw_focus (widget);  return FALSE;}static gint gtk_ev_focus_out      (GtkWidget        *widget,                       GdkEventFocus    *event){  g_return_val_if_fail(widget != NULL, FALSE);  g_return_val_if_fail(GTK_IS_EV(widget), FALSE);  GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);  gtk_widget_draw_focus (widget);  return FALSE;}      </pre>            </td>          </tr>        </table>        <p>          These implementations are the minimal ones; all focusable          widgets must set or unset the <span class="STRUCTNAME">          GTK_HAS_FOCUS</span> flag when they gain or lose the          focus, and they must emit the <span class="SYMBOL">          "draw_focus"</span> signal.        </p>        <p>          <tt class="CLASSNAME">GtkEv</tt> has a lazy          implementation of the <span class="SYMBOL">          "draw_focus"</span> signal; it just calls the same <tt          class="FUNCTION">gtk_ev_paint()</tt> used to respond to          expose events and redraw requests. Recall that <tt class=           "FUNCTION">gtk_ev_paint()</tt> checks whether the <tt          class="CLASSNAME">GtkEv</tt> has the focus and draws a          focus frame if so. Here is the code:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;static void gtk_ev_draw_focus     (GtkWidget        *widget){  GdkRectangle rect;  GtkEv* ev;  g_return_if_fail(widget != NULL);  g_return_if_fail(GTK_IS_EV(widget));  ev = GTK_EV(widget);  rect.x = 0;  rect.y = 0;  rect.width = widget-&gt;allocation.width;  rect.height = widget-&gt;allocation.height;  if (GTK_WIDGET_DRAWABLE (ev))    gtk_ev_paint(ev, &amp;rect);}      </pre>            </td>          </tr>        </table>        <p>          Notice that widget implementations are responsible for          emitting the <span class="SYMBOL">"draw_focus"</span>          signal themselves; GTK+ does not emit it as the focus          moves. Contrast this with the <span class="SYMBOL">          "draw_default"</span> signal, which GTK+ automatically          emits whenever a widget gains or loses the default. <tt          class="CLASSNAME">GtkEv</tt> cannot be the default          widget, so it does not implement this signal.        </p>      </div>      <div class="SECT2">        <h2 class="SECT2">          <a name="Z154"><tt class="CLASSNAME">GtkEv</tt>'s          Functionality</a>        </h2>        <p>          All the code presented so far implements the <tt class=           "CLASSNAME">GtkWidget</tt> and <span class="STRUCTNAME">          GtkObject</span> interfaces. <tt class="CLASSNAME">          GtkEv</tt> does have some unique functionality; namely,          it responds to events on its event window by adding text          describing the event to its buffer, and queueing a          redraw. To do this, it overrides the default <span class=           "SYMBOL">"event"</span> signal handler.        </p>        <p>          Here is <tt class="CLASSNAME">GtkEv</tt>'s event method:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;static gint   gtk_ev_event (GtkWidget        *widget,              GdkEvent         *event){  GtkEv* ev;  g_return_val_if_fail(widget != NULL, FALSE);  g_return_val_if_fail(GTK_IS_EV(widget), FALSE);  ev = GTK_EV(widget);  if (event-&gt;any.window == widget-&gt;window)    {      if (GTK_WIDGET_CLASS(parent_class)-&gt;event)        return (* GTK_WIDGET_CLASS(parent_class)-&gt;event) (widget, event);      else        return FALSE;    }  else    {      gchar* text;      /* The event is either on ev-&gt;event_window, or it is a key event        * passed down to us from the toplevel GtkWindow       */      text = event_to_text(event);            gtk_ev_push_text(ev, text);      g_free(text);      /* If it was a motion event, make sure we get more */      if (event-&gt;type == GDK_MOTION_NOTIFY)        {          gdk_window_get_pointer(ev-&gt;event_window, NULL, NULL, NULL);        }      /* We didn't "handle" the event, just listened in on it. */      return FALSE;    }}      </pre>            </td>          </tr>        </table>        <p>          Notice that the <span class="STRUCTNAME">window</span>          method of the event is used to distinguish events that          occur on <span class="STRUCTNAME">          widget-&gt;window</span> from events that occur on the          event subwindow. Some events will be received from a          different window entirely; for example, key events          actually occur on a toplevel window, and are passed to          <tt class="CLASSNAME">GtkEv</tt> if <tt class=          "CLASSNAME">GtkEv</tt> has the focus.        </p>        <p>          <tt class="FUNCTION">event_to_text()</tt> is a lengthy          but trivial function that creates a string describing the          event; <tt class="FUNCTION">gtk_ev_push_text()</tt>          pushes the text onto the front of the buffer and queues a          redraw. The implementation of these functions is part of          the complete <tt class="CLASSNAME">GtkEv</tt> code          listing, in Appendix E.        </p>      </div>    </div>    <div class="NAVFOOTER">      <br>      <br>      <table width="100%" border="0" bgcolor="#ffffff" cellpadding=       "1" cellspacing="0">        <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>        <tr>          <td colspan="2" align="left">            <font color="#000000" size="2"><b>The <tt class=             "CLASSNAME">GtkWidget</tt> Base Class</b></font>          </td>          <td colspan="2" align="right">            <font color="#000000" size="2"><b><tt class=            "CLASSNAME">GtkWidget</tt> In Detail</b></font>          </td>        </tr>      </table>    </div>  </body></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产三级电影在线观看| 亚洲人成伊人成综合网小说| 欧洲精品视频在线观看| 亚洲欧美一区二区三区国产精品 | 国产精品日日摸夜夜摸av| 国产乱国产乱300精品| 久久久噜噜噜久噜久久综合| 成人亚洲一区二区一| 国产精品白丝在线| 在线视频你懂得一区| 男人操女人的视频在线观看欧美| 日韩午夜精品电影| 成人动漫视频在线| 亚洲一二三四久久| 久久丝袜美腿综合| 色婷婷av一区二区三区大白胸| 国产精品久久久久久久久搜平片| eeuss国产一区二区三区| 一区二区三区欧美视频| 欧美一级淫片007| 成人亚洲精品久久久久软件| 亚洲国产毛片aaaaa无费看| 欧美成人女星排名| 成人av在线播放网站| 亚洲第一精品在线| 欧美精彩视频一区二区三区| 欧美日韩午夜在线视频| 成人自拍视频在线| 日韩不卡在线观看日韩不卡视频| 中文字幕欧美国产| 91精品国产综合久久久久久 | 欧美岛国在线观看| 色综合天天性综合| 国内精品国产成人国产三级粉色 | 国产精品另类一区| 欧美精品粉嫩高潮一区二区| 成人污污视频在线观看| 日韩精品1区2区3区| 亚洲少妇最新在线视频| www精品美女久久久tv| 欧美三级日本三级少妇99| 国产精品白丝av| 午夜av电影一区| 波多野结衣视频一区| 一区二区在线看| 国产偷国产偷精品高清尤物 | 日韩av电影免费观看高清完整版在线观看| 久久综合久久综合九色| 精品视频色一区| 色先锋久久av资源部| 国产福利一区二区| 激情综合一区二区三区| 日本最新不卡在线| 亚洲一线二线三线久久久| 中文字幕第一页久久| 久久男人中文字幕资源站| 91精品国产综合久久久久久 | 99国产精品99久久久久久| 精品一区二区av| 日本sm残虐另类| 亚洲第一福利一区| 亚洲自拍偷拍图区| 亚洲视频在线观看三级| 国产精品嫩草久久久久| 国产女人aaa级久久久级| 久久综合给合久久狠狠狠97色69| 91精品国产91热久久久做人人| 欧美日韩午夜影院| 欧美高清视频一二三区| 欧美日韩国产电影| 欧美一区二区在线不卡| 制服丝袜亚洲精品中文字幕| 欧美手机在线视频| 337p亚洲精品色噜噜噜| 欧美精品免费视频| 91精品午夜视频| 精品欧美一区二区在线观看| 日韩三级高清在线| 精品国产乱码久久久久久免费| 精品国产一区二区三区久久影院| 日韩欧美成人午夜| 2019国产精品| 国产精品五月天| 亚洲欧美在线视频观看| 一区二区三区在线观看国产 | 日韩一区二区中文字幕| 日韩欧美另类在线| 久久久不卡网国产精品一区| 国产日韩欧美精品在线| 亚洲人妖av一区二区| 一区二区三区视频在线看| 亚洲18女电影在线观看| 青青草成人在线观看| 久久91精品国产91久久小草| 亚洲国产精品传媒在线观看| 色婷婷综合久久久中文字幕| 成人午夜碰碰视频| www.激情成人| 欧美午夜片在线看| 欧美成人一区二区三区| 欧美韩日一区二区三区| 亚洲视频免费在线| 天天免费综合色| 国产一区二区免费视频| 白白色亚洲国产精品| 精品视频一区二区不卡| 久久蜜桃一区二区| 亚洲一区二区在线观看视频| 免费成人在线播放| 成人黄色电影在线| 欧美久久免费观看| 国产调教视频一区| 五月天国产精品| 成人午夜电影网站| 91精品婷婷国产综合久久性色 | 中文字幕亚洲电影| 夜色激情一区二区| 狠狠色狠狠色综合系列| 97久久超碰国产精品电影| 欧美老女人第四色| 日本一区二区在线不卡| 亚洲成人在线观看视频| 国产成人亚洲综合a∨婷婷| 在线日韩一区二区| 国产日韩综合av| 美女爽到高潮91| 91麻豆免费看| 国产欧美日韩麻豆91| 天堂资源在线中文精品| 成人免费看的视频| 欧美videofree性高清杂交| 亚洲美腿欧美偷拍| 国产成人精品综合在线观看| 欧美电影一区二区三区| 亚洲色图丝袜美腿| 国产成人av电影在线播放| 欧美欧美午夜aⅴ在线观看| 国产精品久久二区二区| 国产一区二区三区观看| 欧美人体做爰大胆视频| 日韩一区在线播放| 国产乱码精品一区二区三| 91精品国产高清一区二区三区蜜臀| 综合婷婷亚洲小说| 成人一级片网址| 亚洲精品一区二区在线观看| 日本亚洲天堂网| 欧美日韩视频在线一区二区| 亚洲精品国产无天堂网2021 | 亚洲激情av在线| 成人av在线影院| 国产午夜精品久久久久久久| 久久国产视频网| 日韩视频永久免费| 丝袜美腿一区二区三区| 欧美色图在线观看| 亚洲一区二区视频| 欧美亚一区二区| 亚洲综合区在线| 欧美在线free| 亚洲一区二区av在线| 欧美三级视频在线观看| 亚洲国产欧美日韩另类综合| 欧美在线制服丝袜| 亚洲第一主播视频| 91精品国产综合久久久久久漫画| 五月激情综合网| 日韩欧美电影一区| 国模娜娜一区二区三区| 久久久无码精品亚洲日韩按摩| 蜜臀av亚洲一区中文字幕| 欧美mv日韩mv国产网站app| 久久99国产精品久久99| 久久精品亚洲乱码伦伦中文| 国产精品888| 亚洲同性同志一二三专区| 色哟哟国产精品免费观看| 亚洲激情在线播放| 欧美日韩国产高清一区二区| 日本午夜精品视频在线观看| 日韩精品一区二区三区蜜臀| 国产精品99久久久久久久vr| 国产精品色在线| 在线观看亚洲专区| 日本免费新一区视频| 久久久久一区二区三区四区| 99精品久久99久久久久| 亚洲国产精品人人做人人爽| 日韩精品一区国产麻豆| 国产精品99久久久久久似苏梦涵| 自拍av一区二区三区| 欧美日本不卡视频| 国产成人av影院| 亚洲精品va在线观看| 日韩久久久精品| gogogo免费视频观看亚洲一| 天堂影院一区二区| 国产精品久久久久天堂| 欧美日韩亚洲另类| 国产91丝袜在线播放0|