VBA: Menemukan Hdc dalam lembaran kerja Excel atau UserForm

Berikut ialah dua contoh kecil tentang cara mencari Hdc dalam lembaran kerja:

  • Dengan mengklik pada Sheet1, UserForm dipaparkan.
  • Letakkan penunjuk pada UF, tahan butang tetikus kiri dan seret tetikus.
  • Dengan menutup sub UF terus dan menarik arka di atas helaian.

Bermula

  • Buku kerja baru
  • Tambah nama UserForm = UserForm1

Tampal kod berikut dalam sheet1:

 Private Declare Function Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long,

ByVal X3 Sebagai Long, ByVal Y3 Sebagai Long, ByVal X4 Sebagai Long, ByVal Y4 Sebagai Long) Sebagai Long

Fungsi Deklarasi Swasta ArcTo Lib "gdi32" (ByVal hdc Sebagai Long, ByVal X1 Sebagai Long, ByVal Y1 Sebagai Long, ByVal X2 Sebagai Long, ByVal Y2 Sebagai Long,

ByVal X3 Sebagai Long, ByVal Y3 Sebagai Long, ByVal X4 Sebagai Long, ByVal Y4 Sebagai Long) Sebagai Long

Lembaran kerja Persendirian_SelectionChange (ByVal Target As Range)

Dim B As Long

'aktifkan UC dan lukiskannya (mencari HDC anda)

UserForm1.Show

'Mencari HDC dalam lembaran kerja Excel

monhdc = 0

Adakah semasa myhdc = 0

myhdc = GetForegroundWindow ()

B = myhdc

myhdc = GetDC (myhdc)

Loop

'Gambarkan terus pada Lembaran Kerja

B = Arc (myhdc, 120, 500, 320, 400, 320, 400, 780, 500)

Sub Akhir

Dalam modul pengguna

Tampal kod berikut:

 Jenis Persendirian POINTAPI

X As Long

Y As Long

Jenis Tamat

Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Fungsi Deklarasi Persendirian GetForegroundWindow Lib "user32" () As Long

Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long

Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Fungsi Deklarasi Persendirian MoveToEx Lib "gdi32" (ByVal hdc As Long, _

ByVal X As Long, ByVal Y As Long, lpPoint As Any) As Long

Fungsi Deklarasi Persendirian GetDC Lib "user32" (ByVal hwnd As Long) Sebagai Long

Private Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Byte

Monhdc swasta Sebagai Long

Dim Buff Sebagai Boolean

Sub Peribadi UserForm_MouseDown (ByVal Button Sebagai Integer, ByVal Shift Sebagai Integer, ByVal X Sebagai Single, ByVal Y As Single)

Buff = Benar

Sub Akhir

Sub Peribadi UserForm_MouseMove (ByVal Button Sebagai Integer, ByVal Shift Sebagai Integer, ByVal X Sebagai Single, ByVal Y As Single)

Adakah semasa myhdc = 0

myhdc = GetForegroundWindow ()

myhdc = GetDC (monhdc)

Loop

Jika Button 1 Kemudian Keluar Sub

hRPen = CreatePen (PS_SOLID, 10, RGB (0, 255, 0))

DeleteObject SelectObject (myhdc, hRPen)

Sekiranya Buff kemudian

MoveToEx myhdc, X * 1.32, Y * 1.32, & H0

Buff = Palsu

Akhir Jika

LineTo myhdc, X * 1.32, Y * 1.32

DoEvents

Sub Akhir

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama