例如:Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As LongPrivate Sub Command1_Click()
Call LineTo(GetDC(0), 400, 300)
End Sub请赐教,谢谢~

解决方案 »

  1.   

    清空窗体:Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Dim w As Long, h As Long, l As Long, t As Long
    Private Sub Command1_Click()
    Call LineTo(GetDC(0), 400, 300)
    w = Me.Width
    h = Me.Height
    l = Me.Left
    t = Me.Top
    End SubPrivate Sub Command2_Click()
    On Error Resume Next
    Me.Move 0, 0, Screen.Width, Screen.Height
    Me.Cls
    Me.Move l, t, w, h
    End Sub
      

  2.   

    嘿嘿,楼上的耍赖~:)我是想请教该用什么API清除用LineTo画出的线
    由于LineTo是画在一个设备场景上的(像上面的例子里,我用整个屏幕做为设备场景画线),
    我用了几个清除设备场景的API,结果都不奏效请看下面的例子:Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Type POINTAPI
        X As Long
        Y As Long
    End TypePrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button <> 1 Then Exit Sub
    Dim p As POINTAPI
    GetCursorPos p
    Call LineTo(GetDC(0), p.X, p.Y)
    End Sub我想做的就是画第二条线时同时能把第一条线删除掉
    不像现在这样最终会把屏幕全画黑:)
      

  3.   

    将桌面重新画一遍单单删掉是不可能的,只有将背景重新画一边也可以用XOR画笔话,那样删除只要再在原处画一遍就可以了。
    设置DC的作图模式可以用SetROP2函数
      

  4.   

    你是要在屏幕畫嗎?screenDC = GetDC(0)
    SetROP2(screenDC, R2_NOT)
    '畫線
    MoveTo();
    LineTo();
    '擦掉剛才的線,也就是直接叫上面的語句再運行一次
    MoveTo();
    LineTo();'別忘了釋放資源
    ReleaseDC(0, screenDC)