gpt4 book ai didi

visual-studio - Vb6 拖放 HTML 数据

转载 作者:行者123 更新时间:2023-12-04 06:36:25 24 4
gpt4 key购买 nike

在 Visual basic 6 中,剪贴板有多种格式。要从剪贴板检索 HTML 数据,这很有效:https://support.microsoft.com/en-us/kb/274326

现在我的问题是,如何从拖动的数据而不是剪贴板中获取 HTML 信息?

例如,我想要一个多行文本框,当我将内容从网页拖动到文本框时,文本框将显示从 OLE 拖动信息中检索到的 HTML,而不是 vbCFtext。

我尝试使用与上面链接相同的技术,但不使用 GetClipboardData - 使用 Data.GetData(RegisterClipboardFormat("HTML Format")) [来自 Picture1_OLEDragDrop(...] 但我收到溢出错误。我在网上搜索了解决方案。有人在吗?

已编辑:以上已回答,谢谢!

添加:非常感谢!现在扭转这种情况的正确方法是什么?意思是,从文本框(包含 HTML)拖动 - 并将其设置为在 HTML 模式下拖动?

当我简单地使用它时:

Private Sub Text1_OLEStartDrag(Data As DataObject,AllowedEffects As Long)'Data.SetData StrConv(Text1.Text, vbFromUnicode), (CF_HTML)Data.SetData Text1.Text,(CF_HTML)结束子

我得到一个错误:“与 SetData 一起使用的非固有 OLE 拖放格式需要字节数组数据。GetData 返回的字节数可能多于提供给 SetData 的字节数(错误 675)”

发送回数据的准确方法是什么?并注意 in 可以有 Unicode 字符。我是否必须使用内存复制和其他方法才能使其正常工作?非常感谢您的帮助!

最佳答案

您的问题是 RegisterClipboardFormat 返回一个 Long(实际上是一个 uint),但剪贴板格式是 ushort(无符号整数)值。因为我们在 VB6 中没有这样的类型,所以我们的 DataObject 类型需要 Integer 值。因此,我们必须多玩几局游戏:

Option Explicit

Private Declare Function RegisterClipboardFormat Lib "user32" _
Alias "RegisterClipboardFormatW" ( _
ByVal lpString As Long) As Long

Private CF_HTML As Integer

Private Sub Form_Initialize()
Dim Temp As Long

Temp = RegisterClipboardFormat(StrPtr("HTML Format"))
CF_HTML = CInt(Temp And &H7FFF&) Or IIf(Temp And &H8000&, &H8000, 0)
End Sub

Private Sub Text1_OLEDragDrop( _
Data As DataObject, _
Effect As Long, _
Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)

If Effect And vbDropEffectCopy Then
Text1.Text = StrConv(Data.GetData(CF_HTML), vbUnicode)
End If
End Sub

Private Sub Text1_OLEDragOver( _
Data As DataObject, _
Effect As Long, _
Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single, _
State As Integer)

If Data.GetFormat(CF_HTML) Then
Effect = vbDropEffectCopy
Else
Effect = vbDropEffectNone
End If
End Sub

关于visual-studio - Vb6 拖放 HTML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37839085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com