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)

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *