VBA: Hdc atrašana Excel darblapā vai UserForm

Šeit ir divi nelieli piemēri par to, kā atrast Hdc darblapā:
- Noklikšķinot uz Sheet1, tiek parādīts UserForm.
- Novietojiet rādītāju uz UF, turiet kreiso peles pogu uz leju un velciet peli.
- Aizverot UF apakšgrupu turpinās un uzlīmē loku uz loksnes.
Darba sākšana
- Jauna darbgrāmata
- Pievienojiet UserForm nosaukumu = UserForm1
Ielīmējiet šādu kodu 1. lapā:
Privāta deklarēt funkciju Arc Lib "gdi32" (ByVal hdc kā garš, ByVal X1 kā garš, ByVal Y1 kā garš, ByVal X2 kā garš, ByVal Y2 kā garš,ByVal X3 tik garš, ByVal Y3 kā garš, ByVal X4 kā garš, ByVal Y4 tik garš) kā garš
Privātās deklarēšanas funkcija ArcTo Lib "gdi32" (ByVal hdc kā garš, ByVal X1 kā garš, ByVal Y1 kā garš, ByVal X2 kā garš, ByVal Y2 kā garš,
ByVal X3 tik garš, ByVal Y3 kā garš, ByVal X4 kā garš, ByVal Y4 tik garš) kā garš
Privātās apakšlapas darblapas_izvēles mainīšana (ByVal Target As Range)
Dim B kā garš
"aktivizēt UC un izmantot to (atrast savu HDC)
UserForm1.Show
'Jūsu HDC meklēšana Excel darblapā
monhdc = 0
Dariet, lai gan myhdc = 0
myhdc = GetForegroundWindow ()
B = myhdc
myhdc = GetDC (myhdc)
Loop
'Uzzīmējiet tieši darblapā
B = Arc (myhdc, 120, 500, 320, 400, 320, 400, 780, 500)
Beigt Sub
Lietotāja formāta modulī
Ielīmējiet šādu kodu:
Privāts veids POINTAPIX Tik ilgi
Y As Long
Beigas tips
Private Declare Funkcija DeleteObject Lib "gdi32" (ByVal hObject As Long) Tik ilgi
Privātās deklarēšanas funkcija SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject kā garš)
Privāta deklarēšana Funkcija GetForegroundWindow Lib "user32" () Tik ilgi
Privātās deklarēšanas funkcija CreatePen Lib "gdi32" (ByVal nPenStyle kā garš, ByVal nWidth As Long, ByVal crColor As Long) kā garš
Private Declare Function LineTo Lib "gdi32" (ByVal hdc kā garš, ByVal X kā garš, ByVal Y kā garš) kā garš
Privātās deklarēšanas funkcija MoveToEx Lib "gdi32" (ByVal hdc As Long, _
ByVal X kā garš, ByVal Y kā garš, lpPoint kā jebkurš) kā garš
Privāta deklarēšana Funkcija GetDC Lib "user32" (ByVal hwnd As Long) Tik ilgi
Private Declare Funkcija SetPixelV Lib "gdi32" (ByVal hdc kā garš, ByVal X kā garš, ByVal Y kā garš, ByVal crColor As Long) kā baits
Privāts mondc kā garš
Dim Buff kā Būla
Privāts sub UserForm_MouseDown (ByVal poga kā pilnīgs, ByVal Shift kā pilnīgs, ByVal X kā Single, ByVal Y kā Single)
Buff = True
Beigt Sub
Privāts sub UserForm_MouseMove (ByVal poga kā pilnīgs, ByVal Shift kā pilnīgs, ByVal X kā Single, ByVal Y kā Single)
Dariet, lai gan myhdc = 0
myhdc = GetForegroundWindow ()
myhdc = GetDC (monhdc)
Loop
Ja poga 1 Pēc tam iziet no sub
hRPen = CreatePen (PS_SOLID, 10, RGB (0, 255, 0))
DeleteObject SelectObject (myhdc, hRPen)
Pēc tam, kad Buff
MoveToEx myhdc, X * 1.32, Y * 1.32, un H0
Buff = False
Beigas Ja
LineTo myhdc, X * 1.32, Y * 1.32
DoEvents
Beigt Sub