VBA : Excel 워크 시트 또는 사용자 정의 폼에서 Hdc 찾기

다음은 워크 시트에서 Hdc를 찾는 방법에 대한 두 가지 작은 예제입니다.

  • Sheet1 클릭하면 사용자 정의 폼이 표시됩니다.
  • 포인터를 UF에 놓고 마우스 왼쪽 버튼을 누른 상태에서 마우스를 끕니다.
  • UF를 닫으면 sub가 계속되고 시트에 호를 그립니다.

시작하기

  • 새로운 통합 문서
  • 사용자 정의 폼 이름 추가 = UserForm1

sheet1에 다음 코드를 붙여 넣습니다.

 개인 선언 함수 Arc Lib "gdi32"(ByVal hdc As Long, ByVal X1 Long, ByVal Y1 Long, ByVal X2 Long, ByVal Y2 Long,

ByVal X3 길게, ByVal Y3 길게, ByVal X4 길게, ByVal Y4 길다) 길게

개인 선언 함수 ArcTo Lib "gdi32"(ByVal hdc As Long, ByVal X1 Long, ByVal Y1 Long, ByVal X2 Long, ByVal Y2 Long,

ByVal X3 길게, ByVal Y3 길게, ByVal X4 길게, ByVal Y4 길다) 길게

개인 하위 Worksheet_SelectionChange (범위로 ByVal 대상)

희미한 B 형

'UC를 활성화하고 그 위에 그립니다 (HDC 찾기).

UserForm1.Show

'Excel 워크 시트에서 HDC 찾기

monhdc = 0

동안 myhdc = 0

myhdc = GetForegroundWindow ()

B = myhdc

myhdc = GetDC (myhdc)

고리

'워크 시트에 직접 그리기

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

End Sub

userform 모듈에서

다음 코드를 붙여 넣습니다.

 개인 유형 POINTAPI

X As Long

Y는 길다

엔드 타입

개인 선언 함수 DeleteObject Lib "gdi32"(ByVal hObject As Long) Long

개인 선언 함수 SelectObject Lib "gdi32"(ByVal hdc As Long, ByVal hObject As Long) Long

개인 선언 함수 GetForegroundWindow Lib "user32"() Long

개인 선언 함수 CreatePen Lib "gdi32"(ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) Long

개인 선언 함수 LineTo Lib "gdi32"(ByVal hdc As Long, ByVal X Long, ByVal Y Long) As Long

개인 선언 함수 MoveToEx Lib "gdi32"(ByVal hdc As Long, _

ByVal X As Long, ByVal Y As Long), lpPoint As Any Any) 오랫동안

개인 선언 함수 GetDC Lib "user32"(ByVal hwnd As Long) Long

개인 선언 함수 SetPixelV Lib "gdi32"(ByVal hdc As Long, ByVal Y Long, ByVal Y By Long, ByVal crColor As Long) Bytes

비공개 monhdc As Long

Dim Buff As As Boolean

전용 하위 UserForm_MouseDown (ByVal 단추를 Integer, ByVal Shift As 정수, ByVal X Single, ByVal Y Single로 ByVal 단추)

버프 = 참

End Sub

Private Sub UserForm_MouseMove (ByVal 단추를 Integer, ByVal Shift As 정수, ByVal X를 Single로, ByVal Y를 Single로)

동안 myhdc = 0

myhdc = GetForegroundWindow ()

myhdc = GetDC (monhdc)

고리

If Button 1 Then Exit Sub

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

DeleteObject SelectObject (myhdc, hRPen)

If Buff

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

버프 = 거짓

끝면

LineTo myhdc, X * 1.32, Y * 1.32

DoEvents

End Sub

이전 기사 다음 기사

톱 팁