⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtk-drag-and-drop.html

📁 该压缩包包含了GTK+的大量API函数
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<HTML><HEAD><TITLE>Drag and Drop</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.61"><LINKREL="HOME"TITLE="GTK+ Reference Manual"HREF="index.html"><LINKREL="UP"TITLE="GTK+ "HREF="gtk.html"><LINKREL="PREVIOUS"TITLE="Selections"HREF="gtk-selections.html"><LINKREL="NEXT"TITLE="Signals"HREF="gtk-signals.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="gtk-selections.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>&#60;&#60;&#60; 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="gtk.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gtk-signals.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page &#62;&#62;&#62;</B></FONT></A></TD></TR></TABLE></DIV><H1><ANAME="GTK-DRAG-AND-DROP">Drag and Drop</A></H1><DIVCLASS="REFNAMEDIV"><ANAME="AEN6965"></A><H2>Name</H2>Drag and Drop&nbsp;--&nbsp;Functions for controlling drag and drop handling.</DIV><DIVCLASS="REFSYNOPSISDIV"><ANAME="AEN6968"></A><H2>Synopsis</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS">&#13;#include &lt;gtk/gtk.h&gt;enum        <AHREF="gtk-drag-and-drop.html#GTKDESTDEFAULTS">GtkDestDefaults</A>;enum        <AHREF="gtk-drag-and-drop.html#GTKTARGETFLAGS">GtkTargetFlags</A>;void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-DEST-SET">gtk_drag_dest_set</A>               (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF="gtk-drag-and-drop.html#GTKDESTDEFAULTS">GtkDestDefaults</A> flags,                                             const <AHREF="gtk-selections.html#GTKTARGETENTRY">GtkTargetEntry</A> *targets,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> n_targets,                                             <AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGACTION>GdkDragAction</A> actions);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-DEST-SET-PROXY">gtk_drag_dest_set_proxy</A>         (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF=../gdk/gdk-windows.html#GDKWINDOW>GdkWindow</A> *proxy_window,                                             <AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGPROTOCOL>GdkDragProtocol</A> protocol,                                             <AHREF=../glib/glib-basic-types.html#GBOOLEAN>gboolean</A> use_coordinates);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-DEST-UNSET">gtk_drag_dest_unset</A>             (<AHREF="gtkwidget.html">GtkWidget</A> *widget);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-FINISH">gtk_drag_finish</A>                 (<AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGCONTEXT>GdkDragContext</A> *context,                                             <AHREF=../glib/glib-basic-types.html#GBOOLEAN>gboolean</A> success,                                             <AHREF=../glib/glib-basic-types.html#GBOOLEAN>gboolean</A> del,                                             <AHREF=../glib/glib-basic-types.html#GUINT32>guint32</A> time);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-GET-DATA">gtk_drag_get_data</A>               (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGCONTEXT>GdkDragContext</A> *context,                                             <AHREF=../gdk/gdk-properties-and-atoms.html#GDKATOM>GdkAtom</A> target,                                             <AHREF=../glib/glib-basic-types.html#GUINT32>guint32</A> time);<AHREF="gtkwidget.html">GtkWidget</A>*  <AHREF="gtk-drag-and-drop.html#GTK-DRAG-GET-SOURCE-WIDGET">gtk_drag_get_source_widget</A>      (<AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGCONTEXT>GdkDragContext</A> *context);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-HIGHLIGHT">gtk_drag_highlight</A>              (<AHREF="gtkwidget.html">GtkWidget</A> *widget);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-UNHIGHLIGHT">gtk_drag_unhighlight</A>            (<AHREF="gtkwidget.html">GtkWidget</A> *widget);<AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGCONTEXT>GdkDragContext</A>* <AHREF="gtk-drag-and-drop.html#GTK-DRAG-BEGIN">gtk_drag_begin</A>              (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF="gtk-selections.html#GTKTARGETLIST">GtkTargetList</A> *targets,                                             <AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGACTION>GdkDragAction</A> actions,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> button,                                             <AHREF=../gdk/gdk-event-structures.html#GDKEVENT>GdkEvent</A> *event);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-SET-ICON-WIDGET">gtk_drag_set_icon_widget</A>        (<AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGCONTEXT>GdkDragContext</A> *context,                                             <AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> hot_x,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> hot_y);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-SET-ICON-PIXMAP">gtk_drag_set_icon_pixmap</A>        (<AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGCONTEXT>GdkDragContext</A> *context,                                             <AHREF=../gdk/gdk-colormaps-and-colors.html#GDKCOLORMAP>GdkColormap</A> *colormap,                                             <AHREF=../gdk/gdk-bitmaps-and-pixmaps.html#GDKPIXMAP>GdkPixmap</A> *pixmap,                                             <AHREF=../gdk/gdk-bitmaps-and-pixmaps.html#GDKBITMAP>GdkBitmap</A> *mask,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> hot_x,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> hot_y);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-SET-ICON-DEFAULT">gtk_drag_set_icon_default</A>       (<AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGCONTEXT>GdkDragContext</A> *context);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-SET-DEFAULT-ICON">gtk_drag_set_default_icon</A>       (<AHREF=../gdk/gdk-colormaps-and-colors.html#GDKCOLORMAP>GdkColormap</A> *colormap,                                             <AHREF=../gdk/gdk-bitmaps-and-pixmaps.html#GDKPIXMAP>GdkPixmap</A> *pixmap,                                             <AHREF=../gdk/gdk-bitmaps-and-pixmaps.html#GDKBITMAP>GdkBitmap</A> *mask,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> hot_x,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> hot_y);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-SOURCE-SET">gtk_drag_source_set</A>             (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF=../gdk/gdk-windows.html#GDKMODIFIERTYPE>GdkModifierType</A> start_button_mask,                                             const <AHREF="gtk-selections.html#GTKTARGETENTRY">GtkTargetEntry</A> *targets,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> n_targets,                                             <AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGACTION>GdkDragAction</A> actions);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-SOURCE-SET-ICON">gtk_drag_source_set_icon</A>        (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF=../gdk/gdk-colormaps-and-colors.html#GDKCOLORMAP>GdkColormap</A> *colormap,                                             <AHREF=../gdk/gdk-bitmaps-and-pixmaps.html#GDKPIXMAP>GdkPixmap</A> *pixmap,                                             <AHREF=../gdk/gdk-bitmaps-and-pixmaps.html#GDKBITMAP>GdkBitmap</A> *mask);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-SOURCE-UNSET">gtk_drag_source_unset</A>           (<AHREF="gtkwidget.html">GtkWidget</A> *widget);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-SOURCE-HANDLE-EVENT">gtk_drag_source_handle_event</A>    (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF=../gdk/gdk-event-structures.html#GDKEVENT>GdkEvent</A> *event);void        <AHREF="gtk-drag-and-drop.html#GTK-DRAG-DEST-HANDLE-EVENT">gtk_drag_dest_handle_event</A>      (<AHREF="gtkwidget.html">GtkWidget</A> *toplevel,                                             <AHREF=../gdk/gdk-event-structures.html#GDKEVENT>GdkEvent</A> *event);</PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN7049"></A><H2>Description</H2><P>GTK+ has a rich set of functions for doing inter-processcommunication via the drag-and-drop metaphore. GTK+can do drag and drop (DND) via multiple protocols.The currently supported protocols are the Xdnd andMotif protocols.As well as the functions listed here, applicationsmay need to use some facilities provided for<AHREF="gtk-selections.html">Selections</A>.Also, the Drag and Drop API makes use of signalsin the <AHREF="gtkwidget.html">GtkWidget</A> class.</P></DIV><DIVCLASS="REFSECT1"><ANAME="AEN7054"></A><H2>Details</H2><DIVCLASS="REFSECT2"><ANAME="AEN7056"></A><H3><ANAME="GTKDESTDEFAULTS"></A>enum GtkDestDefaults</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">typedef enum {  GTK_DEST_DEFAULT_MOTION     = 1 &lt;&lt; 0, /* respond to "drag_motion" */  GTK_DEST_DEFAULT_HIGHLIGHT  = 1 &lt;&lt; 1, /* auto-highlight */  GTK_DEST_DEFAULT_DROP       = 1 &lt;&lt; 2, /* respond to "drag_drop" */  GTK_DEST_DEFAULT_ALL        = 0x07} GtkDestDefaults;</PRE></TD></TR></TABLE><P>The GtkDestfaults enumeration specifies the varioustypes of action that will be taken on behalfof the user for a drag destination site.</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN7062"></A><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#F0F0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><SPANCLASS="SYMBOL">GTK_DEST_DEFAULT_MOTION</SPAN></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">   If set for a widget, GTK+, during a drag over this   widget will check if the drag matches this widget's   list of possible targets and actions.   GTK+ will then call gtk_drag_status() as appropriate.</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><SPANCLASS="SYMBOL">GTK_DEST_DEFAULT_HIGHLIGHT</SPAN></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">   If set for a widget, GTK+ will draw a highlight on   this widget as long as a drag is over this widget   and the wiget drag format and action is accetable.</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><SPANCLASS="SYMBOL">GTK_DEST_DEFAULT_DROP</SPAN></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">   If set for a widget, when a drop occurs, GTK+ will   will check if the drag matches this widget's   list of possible targets and actions. If so,    GTK+ will call gtk_drag_data_get() on behalf    of the widget. Whether or not the drop is succesful,   GTK+ will call <AHREF="gtk-drag-and-drop.html#GTK-DRAG-FINISH">gtk_drag_finish</A>(). If the action   was a move, then if the drag was succesful, then   <TTCLASS="LITERAL">TRUE</TT> will be passed for the <TTCLASS="PARAMETER"><I>delete</I></TT> parameter   to <AHREF="gtk-drag-and-drop.html#GTK-DRAG-FINISH">gtk_drag_finish</A>().</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><SPANCLASS="SYMBOL">GTK_DEST_DEFAULT_ALL</SPAN></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">   If set, specifies that all default actions should   be taken.</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN7089"></A><H3><ANAME="GTKTARGETFLAGS"></A>enum GtkTargetFlags</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">typedef enum {  GTK_TARGET_SAME_APP = 1 &lt;&lt; 0,    /*&lt; nick=same-app &gt;*/  GTK_TARGET_SAME_WIDGET = 1 &lt;&lt; 1  /*&lt; nick=same-widget &gt;*/} GtkTargetFlags;</PRE></TD></TR></TABLE><P>The <AHREF="gtk-drag-and-drop.html#GTKTARGETFLAGS">GtkTargetFlags</A> enumeration is used to specifiesconstraints on an entry in a GtkTargetTable. </P><P></P><DIVCLASS="VARIABLELIST"><DL><DT><TTCLASS="LITERAL">GTK_TARGET_SAME_APP</TT></DT><DD><P>   If this is set, the target will only be selected   for drags within a single application.   </P></DD><DT><TTCLASS="LITERAL">GTK_TARGET_SAME_WIDGET</TT></DT><DD><P>   If this is set, the target will only be selected   for drags within a single widget.   </P></DD></DL></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN7106"></A><H3><ANAME="GTK-DRAG-DEST-SET"></A>gtk_drag_dest_set ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">void        gtk_drag_dest_set               (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF="gtk-drag-and-drop.html#GTKDESTDEFAULTS">GtkDestDefaults</A> flags,                                             const <AHREF="gtk-selections.html#GTKTARGETENTRY">GtkTargetEntry</A> *targets,                                             <AHREF=../glib/glib-basic-types.html#GINT>gint</A> n_targets,                                             <AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGACTION>GdkDragAction</A> actions);</PRE></TD></TR></TABLE><P>Set a widget as a potential drop destination.</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN7116"></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>widget</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">a widget</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>flags</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the flags that specify what actions GTK+ should take on behalf of a widget for drops onto that widget. The <TTCLASS="PARAMETER"><I>targets</I></TT> and <TTCLASS="PARAMETER"><I>actions</I></TT> fields only are used if <TTCLASS="LITERAL">GTK_DEST_DEFAULT_MOTION</TT> or <TTCLASS="LITERAL">GTK_DEST_DEFAULT_DROP</TT> are given.</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>targets</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">a pointer to an array of <AHREF="gtk-selections.html#GTKTARGETENTRY">GtkTargetEntry</A> indicating the drop types that this widget will accept.</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>n_targets</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the number of entries in <TTCLASS="PARAMETER"><I>targets</I></TT>.</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>actions</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">a bitmask of possible actions for a drop onto this widget.&#13;</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN7147"></A><H3><ANAME="GTK-DRAG-DEST-SET-PROXY"></A>gtk_drag_dest_set_proxy ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">void        gtk_drag_dest_set_proxy         (<AHREF="gtkwidget.html">GtkWidget</A> *widget,                                             <AHREF=../gdk/gdk-windows.html#GDKWINDOW>GdkWindow</A> *proxy_window,                                             <AHREF=../gdk/gdk-drag-and-drop.html#GDKDRAGPROTOCOL>GdkDragProtocol</A> protocol,                                             <AHREF=../glib/glib-basic-types.html#GBOOLEAN>gboolean</A> use_coordinates);</PRE></TD></TR></TABLE><P>Set this widget as a proxy for drops to another window.</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN7156"></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>widget</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">a <AHREF="gtkwidget.html">GtkWidget</A></TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>proxy_window</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the window to which to forward drag events</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>protocol</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the drag protocol which the <TTCLASS="PARAMETER"><I>proxy_window</I></TT> accepts           (You can use <AHREF=../gdk/gdk-drag-and-drop.html#GDK-DRAG-GET-PROTOCOL>gdk_drag_get_protocol</A>() to determine this)</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>use_coordinates</I></TT>&nbsp;:</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">If true, send the same coordinates to the                  destination, because it is a embedded                   subwindow.&#13;</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN7180"></A><H3><A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -