VBA: Намиране на Hdc в Excel лист или UserForm

Ето два малки примера как да намерите Hdc в работен лист:

  • Чрез щракване върху Sheet1 се показва UserForm.
  • Поставете показалеца на UF, задръжте левия бутон на мишката и плъзнете мишката.
  • Чрез затваряне на UF подложката продължава и се изчертава дъга върху листа.

Приготвяме се да започнем

  • Нова работна книга
  • Добавете потребителско име = UserForm1

Поставете следния код в лист1:

 Частна декларираща функция Arc Lib "gdi32" (ByVal hdc Дълъг, ByVal X1 дълъг, ByVal Y1 дълъг, ByVal X2 дълъг, ByVal Y2 дълъг,

ByVal X3 дълъг, ByVal Y3 дълъг, ByVal X4 дълъг, ByVal Y4 дълъг)

Частна декларираща функция ArcTo Lib "gdi32" (ByVal hdc Дълъг, ByVal X1 дълъг, ByVal Y1 дълъг, ByVal X2 дълъг, ByVal Y2 дълъг,

ByVal X3 дълъг, ByVal Y3 дълъг, ByVal X4 дълъг, ByVal Y4 дълъг)

Частна подложка_Промяна на избора

Дим Б толкова дълъг

"активирайте UC и изтеглете върху него (намиране на вашия HDC)

UserForm1.Show

'Намиране на вашия HDC в работния лист на Excel

monhdc = 0

Да, докато myhdc = 0

myhdc = GetForegroundWindow ()

B = myhdc

myhdc = GetDC (myhdc)

контур

„Начертайте директно на работния лист

В = дъга (myhdc, 120, 500, 320, 400, 320, 400, 780, 500)

Край Под

В модула userform

Поставете следния код:

 Частен тип POINTAPI

X толкова дълго

Y толкова дълго

Тип край

Частна декларираща функция DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Частна декларираща функция SelectObject Lib "gdi32" (ByVal hdc Дълъг, ByVal hObject толкова дълъг)

Частна декларираща функция GetForegroundWindow Lib "user32" () As Long

Функция за лично деклариране CreatePen Lib "gdi32" (ByVal nPenStyle Long, ByVal nWidth Long, ByVal crColor Long)

Частна декларираща функция LineTo Lib "gdi32" (ByVal hdc Дълъг, ByVal X толкова дълъг, ByVal Y толкова дълъг)

Частна декларираща функция MoveToEx Lib "gdi32" (ByVal hdc Long, _

ByVal X толкова дълъг, ByVal Y толкова дълъг, lpPoint As Any) По-дълго

Частна декларираща функция GetDC Lib "user32" (ByVal hwnd As Long) As Long

Частна декларираща функция SetPixelV Lib "gdi32" (ByVal hdc Дълъг, ByVal X толкова дълъг, ByVal Y толкова дълъг, ByVal crColor Long) Като байт

Частен монсхел, колкото дълго

Dim Buff Като булева

Частно подчинено потребителско име_Форма_на_маса (ByVal бутон като цяло число, смяна на ByVal като цяло число, ByVal X като единично, ByVal Y като единично)

Buff = Вярно

Край Под

Частно подчинено потребителско имеForm_MouseMove (ByVal бутон като цяло число, ByVal Shift As Integer, ByVal X като единично, ByVal Y като единично)

Да, докато myhdc = 0

myhdc = GetForegroundWindow ()

myhdc = GetDC (monhdc)

контур

Ако бутон 1 тогава излезте от под

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

Изтриване на обект SelectObject (myhdc, hRPen)

Ако тогава Бъф

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

Buff = False

Край Ако

LineTo myhdc, X * 1.32, Y * 1.32

DoEvents

Край Под

Предишна Статия Следваща Статия

Топ Съвети