SKY外语计算机学习

标题: VB_编程中巧辨剪贴板格式 [打印本页]

作者: fieldmax    时间: 2012-4-28 21:34
标题: VB_编程中巧辨剪贴板格式
本帖最后由 fieldmax 于 2012-4-28 22:34 编辑

VB编程中巧辨剪贴板格式

  我们在VB编程中,无论是使用TEXT控件还是RichTextBox控件,或PICTURE控件,最后都不可避免地要与Windows做交互,这时CLIPBOARD(剪贴板)就派上用场了。假设我自写的窗口上有一个TEXT1控件,和两个COMMAND按钮——“复制”和“粘贴”,而你只是用TEXT1做暂时储存一些ASCII文本用的平台(比如复制一些碰巧遇到的网址),然后再转存到其他文本文件中去。
 
一、文本的复制与粘贴
  第一步:Command1(复制)按钮中使用Clear方法清除剪切板中原有的内容,然后用SETDATA方法(也可以是用SETTEXT方法,用法相同,但只能获得普通的文本信息,SETDATA可以获取多种格式的信息,但需要配合GETFORMAT方法来使用,文章后面将会提到) 来获取TEXT1控件的内容:

  1. Private Sub Command1_Click()
  2.   Clipboard.Clear
  3.   Clipboard.SetData Text1.Text, vbCF
  4.   Text
  5. End Sub
复制代码
这里须特别注意的就是,一定要先将剪切板的内容Clear掉,否则下一步的复制将无法成功,因为剪切板内的内容是无法覆盖的。
  第二步:Command2(粘贴 )按钮中使用GETDATA方法获取已经储存在剪切板中的内容:

  1. Private Sub Command2_Click()
  2.   If Text1.Text <> "" Then
  3.     Text1.Text = Text1.Text & Chr(13) & Chr(10) & Clipboard.GetText()
  4.   Else
  5.     Text1.Text = Clipboard.GetText()
  6.   End If
  7. End Sub
复制代码
二、多种格式的辨识
  这个例子算完成了,可是也许有的朋友会问,如果我做的是一个混合图形文本编辑的工具怎么办?不可能所有的格式我都会预先知道啊。其实这也是刚才我提到的问题。经过仔细研究后发现了下面的解决方法:
  这里需要用到CLIPBOARD的GETFORMAT方法与和它对应的几个返回值,由于返回值较多,这里只列举几个常用的。
  1.vbCFEMetafile :Windows的元文件
  2. vbCFBitmap:位图
  3.vbCFpalette:Windows调色板
  4.vbCFtext:普通的文本
  5.vbCFrtf: 多信息文本格式
  GETFORMAT方法:
  GETFORMAT方法我要重点提一下,它有返回值,且不能返回多值,只能返回Boolean型的单值,所以使用GETFORMAT方法,我们就要用到IF……ELSEIF 的嵌套了:
  With

  1. With Clipboard
  2.   If .GetFormat(vbCFText) Then
  3.   ………..
  4.   ElseIf .GetFormat(vbCFBitmap) Then
  5.   ………
  6.   ElseIf .GetFormat(vbCFRTF) Then
  7.   ……..
  8.   ElseIf .GetFormat(vbCFFiles) Then
  9.   ……..
  10.   ElseIf .GetFormat(vbCFMetafile) Then
  11.   ……..
  12.   End If
  13. End With
复制代码
到此,我们已经成功实现了VB编程中剪贴板多格式素材的辨识。





欢迎光临 SKY外语计算机学习 (http://www.skywj.com/) Powered by Discuz! X2.5