GTK+ 2.0 教学-拖曳

GTK+ 有一套高级的函式用来支持图形程式之间通过拖曳系统传递讯息。GTK+ 能在低级的 Xdnd 和 Motif 拖曳协议基础上实施拖曳。

概述

一个支持 GTK+ 拖曳的应用程式先要定义和设置能拖曳的元件。每个元件都可以是拖曳的来源端和/或目标端。注意这些元件必须有一个关联的 X 视窗,用 GTK_WIDGET_NO_WINDOW(widget) 检测。

来源元件可以发送拖动资料,因此允许用户把东西从它们上面拖出去,同时目标元件能接收拖动资料。拖曳的目标端能限制它们接受谁的拖动资料,比如,同一应用程式或任意应用程式(包括它自己)。

发送和接收拖动资料是利用 GTK+ 信号来进行的。投放一个项目到一个目的元件需要一个资料请求(来源元件使用)和资料接收信号处理函式(目的元件使用)。如果你想要知道何时拖动开始(在开始的最初一瞬间),以及何时整个拖曳过程完成(是否成功)可以连接一些附加的信号处理函式来使用。

当接收到请求时,你的应用程式将需要为来源元件提供资料,还包括一个拖动资料请求信号处理函式。而对目的元件将需要一个拖动资料接收信号处理函式。

一个典型的拖曳周期将像下面这样:

  1. 拖动开始。
  2. 拖动资料请求(当投放发生)。
  3. 拖动资料被接收(可能在同一个应用程式内部或不同应用程式之间)。
  4. 拖动资料被删除(如果拖动是移动)。
  5. 拖曳过程完成。

在它们之间也有一些次要的步骤,但这些我们等下再作详细介绍。

Comments are closed.