vb6.0 如何跨容器或者跨窗体拖动图片?

\u6709\u591a\u4e2avb6\u7684\u7a97\u4f53\uff0c\u73b0\u5728\u6211\u60f3\u8ba9\u5b83\u65e0\u6cd5\u62d6\u52a8\u8fb9\u6846\u653e\u5927\u5b83\uff0c\u600e\u4e48\u8bbe\u7f6e

\u628a\u7a97\u4f53\u7684BorderStyle\u5c5e\u6027\u8bbe\u4e3a1\u5373\u53ef

Text1\u5fc5\u987b\u662f\u591a\u884c\u6587\u672c\u6846\uff0cImage1\u4e2d\u653e\u5165\u4e00\u4e2a\u5c0f\u56fe\u7247\uff1a

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_LINESCROLL = &HB6

Dim my As Single, it As Single, ls As Long

Private Sub Form_Load()
Image1.Move Text1.Left + Text1.Width, Text1.Top
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
my = Y
it = Image1.Top
ls = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
End If
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ny As Single
If Button = 1 Then
ny = Image1.Top - my + Y
If ny >= Text1.Top And ny <= Text1.Top + Text1.Height - Image1.Height Then Image1.Top = ny
End If
End Sub

Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim sn As Long
If Button = 1 Then
sn = ls * (Image1.Top - it) / (Text1.Height - Image1.Height)
SendMessage Text1.hwnd, EM_LINESCROLL, 0, ByVal sn
End If
End Sub

拖动图片很简单---代码是啥,看看俺能否帮你修改一下
从 Windows“资源管理器”中拖动文件

可在 Windows“资源管理器”和合适的 Visual Basic 控件之间使用 OLE 拖放来拖动文件。例如,可在 Windows“资源管理器”中选定一组文本文件,然后将它们拖放到一个文本框控件中就可将文本全部打开。

为说明这一点,以下过程可用一个文本框控件以及 OLEDragOver 和 OLEDragDrop 事件,并用 DataObject 对象中的 Files 属性和 vbCFFiles 数据格式打开一组文本文件。

从 Windows 资源管理器中拖动文本文件到文本框控件

在 Visual Basic 中启动新的工程。

向窗体添加一个文本框控件并将其 OLEDropMode 属性设置为“手工”。将 MultiLine 属性设置为 True 并清除 Text 属性。

添加函数,选定一组文件。例如:
Sub DropFile(ByVal txt As TextBox, ByVal strFN$)
Dim iFile As Integer
iFile = FreeFile

Open strFN For Input Access Read Lock Read _
Write As #iFile
Dim Str$, strLine$
While Not EOF(iFile) And Len(Str) <= 32000
Line Input #iFile, strLine$
If Str <> "" Then Str = Str & vbCrLf
Str = Str & strLine
Wend
Close #iFile

txt.SelStart = Len(txt)
txt.SelLength = 0
txt.SelText = Str

End Sub

将以下过程添加到 OLEDragOver 事件中。用 GetFormat 方法检测兼容的数据格式 (vbCFFiles)。
Private Sub Text1_OLEDragOver(Data As _
VB.DataObject, Effect As Long, Button As Integer, _
Shift As Integer, X As Single, Y As Single, State _
As Integer)
If Data.GetFormat(vbCFFiles) Then
'若数据格式正确,_
则将即将执行的操作通知源
Effect = vbDropEffectCopy And Effect
Exit Sub
End If
'若数据格式不合适,则不放下
Effect = vbDropEffectNone

End Sub

最后将下列过程添加到 OLEDragDrop 事件中。
Private Sub Text1_OLEDragDrop(Data As _
VB.DataObject, Effect As Long, Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Data.GetFormat(vbCFFiles) Then
Dim vFN

For Each vFN In Data.Files
DropFile Text1, vFN
Next vFN
End If
End Sub

运行应用程序,打开 Windows“资源管理器”,突出显示若干文本文件并将它们拖动到文本框控件中。在文本框中将打开每个文本文件。

扩展阅读:药上有vb1下面有10 ... vib三个孔挂哪个孔 ... 为什么visual c6.0打不开 ... visual c6.0使用教程 ... vb mapp考试题及答案 ... vlookup溢出怎么解决 ... vb5是什么药治疗什么 ... vc6.0不使用头文件设置 ... 为什么现在都不用vb编程 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网