GTK+ 2.0 教学-函式

设置来源元件

gtk_drag_source_set()函式指定一套在元件上拖动操作时的目标类型。

void gtk_drag_source_set( GtkWidget            *widget,
                          GdkModifierType       start_button_mask,
                          const GtkTargetEntry *targets,
                          gint                  n_targets,
                          GdkDragAction         actions );

这些参数的作用如下:

  • widget 指定拖动来源元件
  • start_button_mask 指定能引发拖动操作的滑鼠按键的遮罩位元(bitmask),比如GDK_BUTTON1_MASK
  • targets 指定一个此拖动支持的目标资料类型的表格
  • n_targets 指定上面的目标的数量
  • actions 指定从这个视窗进行拖动时可能的行为的遮罩位元

targets参数是一个由下面的结构组成的阵列:

struct GtkTargetEntry {
   gchar *target;
   guint  flags;
   guint  info;
 };

这一结构指定一个代表拖动类型的字串,可选的旗标和应用程式指派的整数识别字。

如果一个元件不必再担当拖曳操作的来源,用gtk_drag_source_unset()函式可以删除一套拖曳目标类型。

void gtk_drag_source_unset( GtkWidget *widget );

来源元件上的信号

在一个拖曳操作中来源元件将被发送下面的这些信号。

Table 1. 来源元件的信号

drag_begin void (*drag_begin)(GtkWidget *widget, GdkDragContext *dc, gpointer data)
drag_motion gboolean (*drag_motion)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data)
drag_data_get void (*drag_data_get)(GtkWidget *widget, GdkDragContext *dc, GtkSelectionData *selection_data, guint info, guint t, gpointer data)
drag_data_delete void (*drag_data_delete)(GtkWidget *widget, GdkDragContext *dc, gpointer data)
drag_drop gboolean (*drag_drop)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data)
drag_end void (*drag_end)(GtkWidget *widget, GdkDragContext *dc, gpointer data)

设置目的元件

gtk_drag_dest_set()指定这个元件可以接收拖动并指定它能接收的拖动的类型。

gtk_drag_dest_unset()指定元件不再能接收拖动了。

void gtk_drag_dest_set( GtkWidget            *widget,
                        GtkDestDefaults       flags,
                        const GtkTargetEntry *targets,
                        gint                  n_targets,
                        GdkDragAction         actions );

void gtk_drag_dest_unset( GtkWidget *widget );

目的元件上的信号

在一个拖曳操作中目的元件将被发送下面的这些信号。

Table 2. 目的构件的信号

drag_data_received void (*drag_data_received)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, gpointer data)

Comments are closed.