📄 gtksocket.html
字号:
<HTML><HEAD><TITLE>GtkSocket</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.61"><LINKREL="HOME"TITLE="GTK+ Reference Manual"HREF="index.html"><LINKREL="UP"TITLE="GTK+ Widgets and Objects"HREF="gtkobjects.html"><LINKREL="PREVIOUS"TITLE="GtkSeparator"HREF="gtkseparator.html"><LINKREL="NEXT"TITLE="GtkSpinButton"HREF="gtkspinbutton.html"></HEAD><BODYCLASS="REFENTRY"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><THCOLSPAN="4"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="5">GTK+ Reference Manual</FONT></TH></TR><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="gtkseparator.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B><<< Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="index.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="gtkobjects.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gtkspinbutton.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page >>></B></FONT></A></TD></TR></TABLE></DIV><H1><ANAME="GTKSOCKET">GtkSocket</A></H1><DIVCLASS="REFNAMEDIV"><ANAME="AEN39013"></A><H2>Name</H2>GtkSocket -- Container for widgets from other processes.</DIV><DIVCLASS="REFSYNOPSISDIV"><ANAME="AEN39016"></A><H2>Synopsis</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS"> #include <gtk/gtk.h>struct <AHREF="gtksocket.html#GTKSOCKET-STRUCT">GtkSocket</A>;<AHREF="gtkwidget.html">GtkWidget</A>* <AHREF="gtksocket.html#GTK-SOCKET-NEW">gtk_socket_new</A> (void);void <AHREF="gtksocket.html#GTK-SOCKET-STEAL">gtk_socket_steal</A> (<AHREF="gtksocket.html">GtkSocket</A> *socket, <AHREF=../glib/glib-basic-types.html#GUINT32>guint32</A> wid); </PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN39025"></A><H2>Object Hierarchy</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS"> <AHREF="gtkobject.html">GtkObject</A> +----<AHREF="gtkwidget.html">GtkWidget</A> +----<AHREF="gtkcontainer.html">GtkContainer</A> +----GtkSocket</PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN39031"></A><H2>Description</H2><P>Together with <AHREF="gtkplug.html">GtkPlug</A>, <AHREF="gtksocket.html">GtkSocket</A> provides the abilityto embed widgets from one process into another processin a fashion that is transparent to the user. Oneprocess creates a <AHREF="gtksocket.html">GtkSocket</A> widget and, passes theXID of that widget's window to the other process, which then creates a <AHREF="gtkplug.html">GtkPlug</A> window with that XID.Any widgets contained in the <AHREF="gtkplug.html">GtkPlug</A> then will appearinside the first applications window.</P><P>The XID of the socket's window is obtained by usingthe GTK_WINDOW_XWINDOW() macro from the headerfile <gdk/gdkx.h>. Before using this macro,the socket must have been realized, and for hence,have been added to its parent.<DIVCLASS="EXAMPLE"><ANAME="AEN39041"></A><P><B>Example 1. Obtaining the XID of a socket </B></P><TABLEBORDER="0"BGCOLOR="#D8F8D8"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">include <gdk/gdkx.h>GtkWidget *socket = <AHREF="gtksocket.html#GTK-SOCKET-NEW">gtk_socket_new</A>();gtk_widget_show (socket);gtk_container_add (GTK_CONTAINER (parent), socket);/* The following call is only necessary if one of * the ancestors of the socket is not yet visible. */gtk_widget_realize (socket);g_print ("The XID of the sockets window is %x\n", GDK_WINDOW_XWINDOW (socket->window));</PRE></TD></TR></TABLE></DIV></P><P>Note that if you pass the XID of the socket to anotherprocess that will create a plug in the socket, you must make sure that the socket widget is not destroyeduntil that plug is created. Violating this rule willcause unpredictable consequences, the most likelyconsequence being that the plug will appear as a separate toplevel window. You can check if the plughas been created by examining the<TTCLASS="STRUCTFIELD"><I>plug_window</I></TT> field of the<AHREF="gtksocket.html">GtkSocket</A> structure. If this field is non-NULL, then the plug has been succesfully created insideof the socket.</P><P>When GTK+ is notified that the embedded window has beendestroyed, then it will destroy the socket as well. Youshould always, therefore, be prepared for your socketsto be destroyed at any time when the main event loopis running.</P><P>A socket can also be used to swallow arbitrary pre-existing top-level windows using <AHREF="gtksocket.html#GTK-SOCKET-STEAL">gtk_socket_steal</A>(),though the integration when this is done will not be as closeas between a <AHREF="gtkplug.html">GtkPlug</A> and a <AHREF="gtksocket.html">GtkSocket</A>.</P></DIV><DIVCLASS="REFSECT1"><ANAME="AEN39055"></A><H2>Details</H2><DIVCLASS="REFSECT2"><ANAME="AEN39057"></A><H3><ANAME="GTKSOCKET-STRUCT"></A>struct GtkSocket</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">struct GtkSocket;</PRE></TD></TR></TABLE><P>The <AHREF="gtkeditable.html">GtkEditable</A> structure contains the following field.(This field should be considered read-only. It shouldnever be set by an application.)<DIVCLASS="INFORMALTABLE"><ANAME="AEN39063"></A><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFF0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><AHREF=../gdk/gdk-windows.html#GDKWINDOW>GdkWindow</A> *plug_window;</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the window embedded inside this <AHREF="gtksocket.html">GtkSocket</A>.</TD></TR></TBODY></TABLE><P></P></DIV></P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN39073"></A><H3><ANAME="GTK-SOCKET-NEW"></A>gtk_socket_new ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><AHREF="gtkwidget.html">GtkWidget</A>* gtk_socket_new (void);</PRE></TD></TR></TABLE><P>Create a new empty <AHREF="gtksocket.html">GtkSocket</A>.</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN39080"></A><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><ICLASS="EMPHASIS">Returns</I> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the new <AHREF="gtksocket.html">GtkSocket</A>. </TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN39090"></A><H3><ANAME="GTK-SOCKET-STEAL"></A>gtk_socket_steal ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">void gtk_socket_steal (<AHREF="gtksocket.html">GtkSocket</A> *socket, <AHREF=../glib/glib-basic-types.html#GUINT32>guint32</A> wid);</PRE></TD></TR></TABLE><P>Reparents a pre-existing toplevel window into a<AHREF="gtksocket.html">GtkSocket</A>.</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN39098"></A><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>socket</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">a <AHREF="gtksocket.html">GtkSocket</A>.</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>wid</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the XID of an existing toplevel window. </TD></TR></TBODY></TABLE><P></P></DIV></DIV></DIV><DIVCLASS="REFSECT1"><ANAME="AEN39112"></A><H2>See Also</H2><P><P></P><DIVCLASS="VARIABLELIST"><DL><DT><AHREF="gtkplug.html">GtkPlug</A></DT><DD><P>the widget that plugs into a <AHREF="gtksocket.html">GtkSocket</A>.</P></DD></DL></DIV></P></DIV><DIVCLASS="NAVFOOTER"><BRCLEAR="all"><BR><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="gtkseparator.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B><<< Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="index.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="gtkobjects.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gtkspinbutton.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page >>></B></FONT></A></TD></TR><TR><TDCOLSPAN="2"ALIGN="left"><FONTCOLOR="#FFFFFF"SIZE="3"><B>GtkSeparator</B></FONT></TD><TDCOLSPAN="2"ALIGN="right"><FONTCOLOR="#FFFFFF"SIZE="3"><B>GtkSpinButton</B></FONT></TD></TR></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -