创建自定义数据格式

如果 Visual Basic 提供的格式不能满足某种特定需要,则可创建用于 OLE 拖放操作的自定义数据格式。例如,如果应用程序定义一个在两个应用程序实例之间或在应用程序内部拖动这个数据格式,自定义数据格式是非常有用的。

为了创建自定义数据格式,应调用 Windows API 中的 RegisterClipboardFormat 函数。例如:

Private Declare Function RegisterClipboardFormat Lib _ 
      "user32.dll" Alias "RegisterClipboardFormatA" _
      (ByVal lpszFormat$) As Integer
Dim MyFormat As Integer

一经定义之后,就可象使用其它 DataObject 对象数据格式一样使用此格式。例如:

Dim a() As Byte
a = Data.GetData(MyFormat)

为使用此功能,应将数据当作字节数组放入 DataObject 对象或从这个对象中获取数据。而后可将自定义数据格式赋予一个字符串变量,因为可对其自动进行转换。

警告 用 GetData 方法获取自定义数据格式,这可能会导致难以预料的后果。

由于 Visual Basic 不理解自定义的数据格式(因为这是程序员定义的),所以无法判断数据的大小。Visual Basic 可判断字节数组的大小,因为数组已由 Windows 分配,但操作系统分配的内存通常会多于实际需要。

因此,在获取自定义数据格式时,取回的字节数组所包含的字节数至少与由源实际放到 DataObject 对象中的字节个数一样多,很可能比此数多。在从 DataObject 对象中取回自定义数据格式时必须正确解释这一格式。例如,必须在简单字符串中搜索 NULL 字符并在此字符所在位置将字符串截断。