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 모듈에서
다음 코드를 붙여 넣습니다.
개인 유형 POINTAPIX 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