VB编程中巧辨剪贴板格式

编程爱好者

我们在VB编程中,无论是使用TEXT控件还是RichTextBox控件,或PICTURE控件,最后都不可避免地要与Windows做交互,这时CLIPBOARD(剪贴板)就派上用场了。假设我自写的窗口上有一个TEXT1控件,和两个COMMAND按钮——“复制”和“粘贴”,而你只是用TEXT1做暂时储存一些ASCII文本用的平台(比如复制一些碰巧遇到的网址),然后再转存到其他文本文件中去。

08-f16-01.jpg

一、文本的复制与粘贴

第一步:Command1(复制)按钮中使用Clear方法清除剪切板中原有的内容,然后用SETDATA方法(也可以是用SETTEXT方法,用法相同,但只能获得普通的文本信息,SETDATA可以获取多种格式的信息,但需要配合GETFORMAT方法来使用,文章后面将会提到) 来获取TEXT1控件的内容:

Private Sub Command1_Click()

Clipboard.Clear

Clipboard.SetData Text1.Text, vbCF

Text

End Sub

这里须特别注意的就是,一定要先将剪切板的内容Clear掉,否则下一步的复制将无法成功,因为剪切板内的内容是无法覆盖的。

第二步:Command2(粘贴 )按钮中使用GETDATA方法获取已经储存在剪切板中的内容:

Private Sub Command2_Click()

If Text1.Text <> "" Then

Text1.Text = Text1.Text & Chr(13) & Chr(10) & Clipboard.GetText()

Else

Text1.Text = Clipboard.GetText()

End If

End Sub

二、多种格式的辨识

这个例子算完成了,可是也许有的朋友会问,如果我做的是一个混合图形文本编辑的工具怎么办?不可能所有的格式我都会预先知道啊。其实这也是刚才我提到的问题。经过仔细研究后发现了下面的解决方法:

这里需要用到CLIPBOARD的GETFORMAT方法与和它对应的几个返回值,由于返回值较多,这里只列举几个常用的。

1.vbCFEMetafile :Windows的元文件

2. vbCFBitmap:位图

3.vbCFpalette:Windows调色板

4.vbCFtext:普通的文本

5.vbCFrtf: 多信息文本格式

GETFORMAT方法:

GETFORMAT方法我要重点提一下,它有返回值,且不能返回多值,只能返回Boolean型的单值,所以使用GETFORMAT方法,我们就要用到IF……ELSEIF 的嵌套了:

With

With Clipboard

If .GetFormat(vbCFText) Then

………..

ElseIf .GetFormat(vbCFBitmap) Then

………

ElseIf .GetFormat(vbCFRTF) Then

……..

ElseIf .GetFormat(vbCFFiles) Then

……..

ElseIf .GetFormat(vbCFMetafile) Then

……..

End If

End With

到此,我们已经成功实现了VB编程中剪贴板多格式素材的辨识。