VB6和VB2010在Windows XP7下的剪贴板 *** 作问题~

VB6和VB2010在Windows XP7下的剪贴板 *** 作问题~,第1张

概述这段时间在写一个叫做Dingcrown KD Print的软件,灰常灰常意外的发现一个BUG: 在VB6做的dll插件中copy的数据在Win7下贴上时出现乱码现象。 dll中VB6的代码: Clipboard.SetText Addr 主程序中VB2010代码: ProductInfo = Clipboard.GetText() ----------------------------- 看起来


这段时间在写一个叫做Dingcrown KD Print的软件,灰常灰常意外的发现一个BUG: 在VB6做的dll插件中copy的数据在Win7下贴上时出现乱码现象。

dll中VB6的代码:

Clipboard.SetText Addr

主程序中VB2010代码:

ProductInfo = Clipboard.GetText()

-----------------------------

看起来很正常的一段代码,一边放入剪贴板,一边取出。。。但是,事实上确实在XP下运行正常,一到WIN7就不行!

仔细去查VB6和VB2010中的Cilpboard的介绍,关于DataFormat

VB6有3种:

常数 描述
vbCFlink &HBF00 DDE 对话信息
vbCFText 1 (缺省值)文本
vbCFRTF &HBF01 RTF(.rtf 文件)

VB2010则有5种:

成员名称 说明
CommaSeparatedValue 指定以逗号分隔值 (CSV) 的格式,这是电子表格常用的交换格式。
HTML 指定由 HTML 数据组成的文本。
Rtf 指定由 RTF 数据组成的文本。
Text 指定标准 ANSI 文本格式。
UnicodeText 指定标准 windows Unicode 文本格式。

很明显VB2010增加了2种,其中新增了一个UnicodeText。那么问题就清晰了...

VB6的SetText放入的格式只能是唯一的格式Text(即ANSI Text),但是在VB2010中,就有2种可能ANSI Text或Unicode Text

在XP下一切正常,表明VB2010的GetText是以ANSI Text的格式从剪贴板中取出的。但在WIN7下乱码了。。。表明它是以Unicode Text格式取出的。。。放入ANSI取出Unicode,不乱才怪

于是,将VB2010中的代码稍作修改:

ProductInfo = Clipboard.GetText(TextDataFormat.Text)

再试着运行一下,不论是XP还是windows7,一切正常!

------------------------------------

此BUG给我们的2点启示是:

1. 从VB6升级到VB2010吧。。它更“真”地支持Unicode --- 关于为什么用真,有玄机哦~ :)

2. 从XP升级到windows7吧。。它默认就Unicode。。Unicode才是王道!

总结

以上是内存溢出为你收集整理的VB6和VB2010在Windows XP/7下的剪贴板 *** 作问题~全部内容,希望文章能够帮你解决VB6和VB2010在Windows XP/7下的剪贴板 *** 作问题~所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1282469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存