有谁能帮我解决一个小问题吗?

moyue 2002-02-15 03:20:58
(1).Effect = vbDropEffectNone
(2).Effect = Effect And vbDropEffectMove
为什么(2)中的Effect的值等于3呢?
在与运算中,不是只有两个值1和3吗?
...全文
36 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunnybay 2002-09-30
  • 打赏
  • 举报
回复
i have emailed to you.
Chice_wxg 2002-02-16
  • 打赏
  • 举报
回复
If Button = 2 Then
'现在Effect是3,vbDropEffectCopy是1
Effect = Effect And vbDropEffectCopy
'现在Effect是1
End If
selEffect = Effect
End Sub

没有问题呀!
bluesky35 2002-02-15
  • 打赏
  • 举报
回复
答案不为0吗?应该为0的,关注!
moyue 2002-02-15
  • 打赏
  • 举报
回复
有谁能来看看吗?
moyue 2002-02-15
  • 打赏
  • 举报
回复
Option Explicit
Dim selEffect As Integer
Private Sub Form_Load()
RichTextBox1.OLEDragMode = rtfOLEDragManual
RichTextBox1.OLEDropMode = rtfOLEDropManual
RichTextBox2.OLEDragMode = rtfOLEDragManual
RichTextBox2.OLEDropMode = rtfOLEDropManual
End Sub

Private Sub Form_Resize()
RichTextBox1.Left = ScaleLeft
RichTextBox1.Top = ScaleTop
RichTextBox1.Width = ScaleWidth / 2
RichTextBox1.Height = ScaleHeight
RichTextBox2.Left = ScaleWidth / 2
RichTextBox2.Top = ScaleTop
RichTextBox2.Width = ScaleWidth / 2
RichTextBox2.Height = ScaleHeight
End Sub

Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If RichTextBox1.SelLength > 0 And Button > 0 Then
RichTextBox1.OLEDrag
End If
End Sub

Private Sub RichTextBox1_OLECompleteDrag(Effect As Long)
If Effect = vbDropEffectMove Then
RichTextBox1.SelText = ""
End If
End Sub

Private Sub RichTextBox1_OLEDragOver(Data As RichTextLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
If Button > 2 Then
Effect = vbDropEffectNone
End If
If Button = 1 Then
Effect = Effect And vbDropEffectMove
End If
If Button = 2 Then
Effect = Effect And vbDropEffectCopy
End If

selEffect = Effect
End Sub

Private Sub RichTextBox1_OLESetData(Data As RichTextLib.DataObject, DataFormat As Integer)
Data.SetData RichTextBox1.SelText, DataFormat
End Sub

Private Sub RichTextBox1_OLEStartDrag(Data As RichTextLib.DataObject, AllowedEffects As Long)
AllowedEffects = vbDropEffectCopy Or vbDropEffectMove
Data.Clear
Data.SetData , vbCFText
Data.SetData , vbCFRTF
End Sub

Private Sub RichTextBox2_LostFocus()
RichTextBox2.SelLength = 0
End Sub

Private Sub RichTextBox2_OLEDragDrop(Data As RichTextLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
If Data.GetFormat(vbCFText) Then
RichTextBox2.SelText = Data.GetData(vbCFText)
Effect = selEffect
Else
Effect = vbDropEffectNone
End If
End Sub

Private Sub RichTextBox2_OLEDragOver(Data As RichTextLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
If Button > 2 Then
Effect = vbDropEffectMove
End If
If Button = 2 Then
Effect = Effect And vbDropEffectCopy
End If
selEffect = Effect
End Sub


我之所以要问以上那个问题,就是想知道为什么要用
Effect = Effect And vbDropEffectCopy而不用
Effect = vbDropEffectCopy我用监视窗口看Effect的值时发现它等于3
moyue 2002-02-15
  • 打赏
  • 举报
回复
等一会
Chice_wxg 2002-02-15
  • 打赏
  • 举报
回复
贴代码,全部贴,呵呵
Chice_wxg 2002-02-15
  • 打赏
  • 举报
回复
Debug.Print vbDropEffectMove
Debug.Print vbDropEffectNone
Debug.Print vbDropEffectNone And vbDropEffectMove

代码没错,输出 2 0 0

肯定你程序有问题。
moyue 2002-02-15
  • 打赏
  • 举报
回复
我也觉得应该是0啊。
但调试什出来的确实是2 。
Amoon 2002-02-15
  • 打赏
  • 举报
回复
肯定是你的电脑在骗你!
zyl910 2002-02-15
  • 打赏
  • 举报
回复
事啊:

vbDropEffectNone=0
vbDropEffectMove=2
vbDropEffectNone(.Effect) And vbDropEffectMove = 0
怎么等于3?
yangzhaoyu 2002-02-15
  • 打赏
  • 举报
回复
答案不是0吗?
0 AND 2 为0

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧