?? gtksocket.sgml
字號:
<!-- ##### SECTION Title ##### -->GtkSocket<!-- ##### SECTION Short_Description ##### -->Container for widgets from other processes<!-- ##### SECTION Long_Description ##### --><para>Together with #GtkPlug, #GtkSocket provides the abilityto embed widgets from one process into another processin a fashion that is transparent to the user. Oneprocess creates a #GtkSocket widget and, passes thethat widget's window ID to the other process, which then creates a #GtkPlug with that window ID.Any widgets contained in the #GtkPlug then will appearinside the first applications window.</para><para>The socket's window ID is obtained by usinggtk_socket_get_id(). Before using this function,the socket must have been realized, and for hence,have been added to its parent.<example><title>Obtaining the window ID of a socket.</title><programlisting>GtkWidget *socket = gtk_socket_new (<!-- -->);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 ID of the sockets window is %#x\n", gtk_socket_get_id (socket));</programlisting></example></para><para>Note that if you pass the window ID 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<structfield>plug_window</structfield> field of the#GtkSocket structure. If this field is non-%NULL, then the plug has been successfully created insideof the socket.</para><para>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.</para><para>The communication between a #GtkSocket and a #GtkPlug follows the <ulink url="http://www.freedesktop.org/standards/xembed-spec">XEmbed</ulink>protocol. This protocol has also been implemented in other toolkits, e.g. <application>Qt</application>, allowing the same level of integrationwhen embedding a <application>Qt</application> widget in GTK or vice versa.</para><para>A socket can also be used to swallow arbitrary pre-existing top-level windows using gtk_socket_steal(),though the integration when this is done will not be as closeas between a #GtkPlug and a #GtkSocket.</para><note><para>The #GtkPlug and #GtkSocket widgets are currently not available on all platforms supported by GTK+.</para></note><!-- ##### SECTION See_Also ##### --><para><variablelist><varlistentry><term>#GtkPlug</term><listitem><para>the widget that plugs into a #GtkSocket.</para></listitem></varlistentry><varlistentry><term><ulink url="http://www.freedesktop.org/standards/xembed-spec">XEmbed</ulink></term><listitem><para>the XEmbed Protocol Specification.</para></listitem></varlistentry></variablelist></para><!-- ##### SECTION Stability_Level ##### --><!-- ##### STRUCT GtkSocket ##### --><para>The #GtkSocket structure contains the <structfield>plug_window</structfield>field. (This field should be considered read-only. It shouldnever be set by an application.)</para><!-- ##### SIGNAL GtkSocket::plug-added ##### --><para>This signal is emitted when a client is successfullyadded to the socket.</para>@socket: the object which received the signal.<!-- # Unused Parameters # -->@socket_: the object which received the signal.<!-- ##### SIGNAL GtkSocket::plug-removed ##### --><para>This signal is emitted when a client is removed from the socket. Thedefault action is to destroy the #GtkSocket widget, so if you want toreuse it you must add a signal handler that returns %TRUE.</para>@socket: the object which received the signal.@Returns: <!-- # Unused Parameters # -->@socket_: the object which received the signal.<!-- ##### FUNCTION gtk_socket_new ##### --><para></para>@Returns: <!-- ##### FUNCTION gtk_socket_steal ##### --><para></para>@socket_: a #GtkSocket.@wid: <!-- ##### FUNCTION gtk_socket_add_id ##### --><para></para>@socket_: @window_id: <!-- # Unused Parameters # -->@id: <!-- ##### FUNCTION gtk_socket_get_id ##### --><para></para>@socket_: @Returns:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -