设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2425|回复: 0
打印 上一主题 下一主题

VB_编程中巧辨剪贴板格式

[复制链接]

16

主题

0

好友

216

积分

中级会员

Rank: 3Rank: 3

生肖
性别

最佳新人 论坛元老

跳转到指定楼层
楼主
发表于 2012-4-28 21:34:38 |只看该作者 |倒序浏览
本帖最后由 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编程中剪贴板多格式素材的辨识。
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分
您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-4-27 15:52 , Processed in 0.131643 second(s), 27 queries .

回顶部