Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
Private Declare Function TextOut Lib "gdi32.dll" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As LongPrivate Const TRANSPARENT = 1
Private Sub Timer1_Timer()
Dim hwnd As Long
hwnd = GetDC(0)
SetBkMode hwnd, TRANSPARENT    '设置透明
TextOut hwnd, 550, 150, "桌面写字测试~~", 14   '写字
DoEvents
End Sub这段代码我把TIME控件interval设为15,但运行一段时间后,系统报出没有足够内存运行其它的程序~~~,为什么,要如何修改???

解决方案 »

  1.   

    hwnd = GetDC(0)
    可以放在Timer事件外面
      

  2.   

    要么,把
    Dim hwnd As Long
    hwnd = GetDC(0)
    放在过程外,把hwnd定义成模块级变量,最好换个名要么,在绘图之后用ReleaseDC释放资源
      

  3.   

    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
    Private Declare Function TextOut Lib "gdi32.dll" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As LongPrivate Const TRANSPARENT = 1
    Dim hwnd As Long
    hwnd = GetDC(0)Private Sub Timer1_Timer()
    SetBkMode hwnd, TRANSPARENT    '设置透明
    TextOut hwnd, 550, 150, "桌面写字测试~~", 14   '写字
    DoEvents
    End Sub我这样修改为什么会出错???GETDC(0)会报无郊外部过程
      

  4.   

    Option ExplicitPrivate Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
    Private Declare Function TextOut Lib "gdi32.dll" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As LongPrivate Const TRANSPARENT = 1
    Dim mHdc As LongPrivate Sub Timer1_Timer()
    SetBkMode mHdc, TRANSPARENT '设置透明
    TextOut mHdc, 550, 150, "桌面写字测试~~", 14 '写字
    DoEvents
    End Sub
    Private Sub Form_Load()
    mHdc = GetDC(0)End Sub