加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VBA怎样获得窗体的句柄和设备场景号

(2015-03-07 20:11:46)
分类: 编程

刘瑞祥

  在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,    '创建画笔
    Ellipse hdc, 0, 0, 200, 100    '画椭圆

End Sub

运行以上代码,单击窗体就能画一个椭圆。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有