刘瑞祥
在Office的VBA中,是无法获得自定义窗体的句柄和设备场景号的,不具备相应的hWnd和hDC属性。为了能获得这两个数字,可以运行下面的代码:
'先声明所需的API代码
Private Declare Function FindWindow Lib
"user32" Alias
"FindWindowA" _
(ByVal
lpClassName As String, ByVal lpWindowName As
String) As Long
Private Declare Function GetDC Lib
"user32" (ByVal hwnd As Long) As Long
Private Declare Function Ellipse Lib
"gdi32" (ByVal hdc As Long, ByVal X1 As Long,
ByVal Y1 As Long, _
ByVal X2 As
Long, ByVal Y2 As Long) As Long
Private Declare Function CreatePen Lib
"gdi32" (ByVal nPenStyle As Long, ByVal nWidth As
Long, _
ByVal
crColor As Long) As Long
Private Sub UserForm_Click()
Dim hwnd
As Long, hdc As
Long
'FindWindow函数第一个参数是窗体的类名,不同版本类名不同,后一个参数是标题
If
Val(Application.Version) < 9 Then
hwnd = FindWindow("ThunderXFrame",
Me.Caption)
Else
hwnd = FindWindow("ThunderDFrame",
Me.Caption)
End If
'以句柄为参数返回设备场景号
hdc =
GetDC(hwnd)
CreatePen 1,
1, 0
'创建画笔
Ellipse hdc,
0, 0, 200,
100 '画椭圆
End Sub
运行以上代码,单击窗体就能画一个椭圆。
加载中,请稍候......