我利用vb在窗体上绘制一条曲线,要求当鼠标在这条曲线的任一点停留时能够这一点的情况,该用什么对象的什么事件,或者是方法?

解决方案 »

  1.   

    Mousemove放一个Label显示在鼠标的旁边,如果鼠标移出窗体范围,隐藏Label
      

  2.   

    楼上的,能否举个简单的例子说明以下Mousemove事件如何使用,还有怎么把Label放在鼠标旁边?
    非常急需哦
      

  3.   

    Private Sub picCurve_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Static sngOldX  As Single
        Static sngOldY  As Single
        Dim i           As Long
        Dim Index       As Long
        Dim vntStream   As clsSCStream
        Dim vntFormula  As clsSCFormula
        
        RaiseEvent MouseMove(Button, Shift, X, Y)
        
        picCurve.DrawMode = vbInvert
        If Len(vntChartTicker.Stream.Text) > 0 Then
            vntChartTickerLine.SelectObject picCurve
            
            If bChartTicker Then
                picCurve.Line (sngOldX, vntChartDrawPlot.Top)- _
                              (sngOldX, vntChartDrawPlot.Top + vntChartDrawPlot.Height)
                picCurve.Line (vntChartDrawPlot.Left, sngOldY)- _
                              (vntChartDrawPlot.Left + vntChartDrawPlot.Width, sngOldY)
                lblMessage.Visible = False
                
                bChartTicker = False
            End If
            
            If (X < vntChartDrawPlot.Left) Or _
               (X > vntChartDrawPlot.Left + vntChartDrawPlot.Width) Or _
               (Y < vntChartDrawPlot.Top) Or _
               (Y > vntChartDrawPlot.Top + vntChartDrawPlot.Height) Then
               
                ReleaseCapture
                
                GoTo ExitHandle
            Else
                SetCapture picCurve.hwnd
            End If
            
            Index = Int(((X - vntChartDrawPlot.Left) * vntChartCurves.MaxPointCount) / vntChartDrawPlot.Width)
            
            Set vntStream = New clsSCStream
            Set vntFormula = New clsSCFormula
            
            vntStream.Text = vntChartTicker.Stream.Text
            vntStream.Sep = vntChartTicker.Stream.Sep
            
            For i = 1 To vntStream.WordCount - 1
                vntFormula.Expression = fTransWord(vntStream.Word(i), Index)
                vntStream.Word(i) = vntFormula.Value
            Next i
            lblMessage.Caption = GetTimeFormat(Index) & vntStream.Format        '写标签
            lblMessage.Top = Y + 10
            
            If X + lblMessage.Width + 10 > vntChartBackPlot.Width Then
                lblMessage.Left = X - lblMessage.Width - 10
            Else
                lblMessage.Left = X + 10
            End If
            lblMessage.Visible = True
        
            sngOldX = X
            sngOldY = Y
            picCurve.Line (sngOldX, vntChartDrawPlot.Top)- _
                          (sngOldX, vntChartDrawPlot.Top + vntChartDrawPlot.Height)
            picCurve.Line (vntChartDrawPlot.Left, sngOldY)- _
                          (vntChartDrawPlot.Left + vntChartDrawPlot.Width, sngOldY)
            bChartTicker = True
            
            RaiseEvent PlotMove(Button, Shift, Index)
        End If
        
    ExitHandle:
        picCurve.DrawMode = vbCopyPen
    End Sub
      

  4.   

    问题解决,谢谢weiweiplay(虚幻)!