line应该也有click事件吧?如果也有,那么编辑这个时间就可以了。

解决方案 »

  1.   

    错!Line控件没有事件!可以参考:
    http://www.dapha.net/soure/pic/Draw%20a%20line%20on%20a%20Picture%20Box%20and%20Select%20it!.zip
    代码名称 在picture内画线,然后选中画的线  
    代码类型 图形图像 
    运行环境 VB6.0/Win9x 
    授权方式 免费代码 
    代码大小 5K 
    代码评价  
    上传时间 2001-12-14 
    相关链接 主页 
    本日下载 1  本周:19  总计:19 
    下载地址1 下载 
    代码简介 虽然能选中线,不过好象不能移动那条线
      

  2.   

    您可以用其他控件代替
    比如Image
    属性设置
    Appearance=0
    boardstyle=1
    height=15(twips)这样您就可以在Image_Click事件中加入您想要的代码了假如想粗一点,可以做一个黑色或者其他颜色的图片填充
      

  3.   

    mouse事件中
    判断鼠标当前点是否与line的起点-终点相交或接近距离小于某值就算选中了
      

  4.   

    CHICKENZZZ:用LineDDA(追踪线段所经过的点)可解决您的问题Declare Function LineDDA Lib "gdi32" (ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal lpLineDDAProc As Long, ByVal lParam As Long) As Long
    n1,n2:线段的第一个点
    n3,n4:线段的第二个点
    lpLineDDAProc: lineDDAProc Callback 程序, 调用LineDDA后, Windows 会以(n1,n2)-(n3,n4)所经过的点为参数调用此程序。
    lParam:额外参数,补上0即可。dim x(2048) as long'记录线段经过的每一个点的x坐标
    dim y(2048) as long'记录线段经过的每一个点的y坐标
    dim n as integer'记录线段经过的点数n= 0
    LineDDA n1,n2,n3,n4, AddressOf lineDDAProc, 0Sub lineDDAProc(ByVal x As Long, ByVal y As Long, ByVal lpData As Long)
        n= n+ 1
        x(n)= x
        y(n)= y
    End Subx,y:鼠标按下时的位置
    for i=1 to n
      if x(i)=x and y(i)=y then
        您的代码(点中Line控件后所需的操作)
      end if
    next如很难点中Line,不妨将上述判断语句改为:
    if ((x(i)-x)^2+(y(i)-y)^2)^0.5<3 then
      

  5.   

    To xiaohuangtao(绿毛网虫):Line控件没有hWnd属性!
      

  6.   

    呵呵,看看后来我自己花几个小时想的解决方法,不用API的,不过思路和LineDDA一样,得出线上每点的座标然后再判断。里面有画直线算法的影子。Public Function PointInLine(ByVal PointX As Long, ByVal PointY As Long, _
                                ByVal LineX1 As Long, ByVal LineY1 As Long, _
                                ByVal LineX2 As Long, ByVal LineY2 As Long, _
                                ByVal LineWidth As Long) As Boolean
                                
        Dim DistanceX As Long, DistanceY As Long
        Dim IncreaseX As Long, IncreaseY As Long
        Dim SumX As Long, SumY As Long
        Dim PosX As Long, PosY As Long
        Dim I As Long
        
            DistanceX = LineX2 - LineX1
            DistanceY = LineY2 - LineY1
            
            IncreaseX = Switch(DistanceX > 0, 1, DistanceX = 0, 0, DistanceX < 0, -1)
            IncreaseY = Switch(DistanceY > 0, 1, DistanceY = 0, 0, DistanceY < 0, -1)
                    
            PosX = LineX1
            PosY = LineY1
            
            DistanceX = Abs(DistanceX)
            DistanceY = Abs(DistanceY)
            
            If DistanceX > DistanceY Then
            
                For I = 0 To DistanceX
                    
                    SumX = SumX + DistanceX
                    SumY = SumY + DistanceY
                    
                    If PosX = PointX Then
                        
                        If Abs(PointY - PosY) <= LineWidth Then PointInLine = True Else PointInLine = False
                        Exit For
                        
                    End If
                    
                    If SumX > DistanceX Then
                        SumX = SumX - DistanceX
                        PosX = PosX + IncreaseX
                    End If
                    
                    If SumY > DistanceX Then
                        SumY = SumY - DistanceX
                        PosY = PosY + IncreaseY
                    End If
                    
                Next
                
            Else
                
                For I = 0 To DistanceY
                    
                    SumX = SumX + DistanceX
                    SumY = SumY + DistanceY
                    
                    If PosY = PointY Then
                    
                        If Abs(PointX - PosX) <= LineWidth Then PointInLine = True Else PointInLine = False
                        Exit For
                    
                    End If
                    
                    If SumX > DistanceY Then
                        SumX = SumX - DistanceY
                        PosX = PosX + IncreaseX
                    End If
                    
                    If SumY > DistanceY Then
                        SumY = SumY - DistanceY
                        PosY = PosY + IncreaseY
                    End If
                    
                Next
                
            End IfEnd Function
      

  7.   

    没有句柄有活动id嘛,如windows里,怎样得到当前活动window的情况?可以得到当前windows的活动id,用个死循环,判断当前所有的活动id,根据活动id可以得到句柄啦。控件也一样啊,我是做过但是记不得源代码了,一般是用是才查。