54、深入理解API编程:从基础到实践

深入理解API编程:从基础到实践

1. API结构体与大小确定

许多API结构体要求其中一个成员代表结构体的整体大小。在将用户定义类型(UDT)发送给API之前,可使用 Len(YourUDTVariable) 来确定其大小。在后续的示例中,会用到API所需的三种不同结构体,其中一个在调用API之前需要设置大小。

2. 指针和句柄
  • 指针概念 :指针是内存块的地址。当声明VBA对象类型时,VBA会分配足够大的内存块来表示该对象,并为变量分配该内存块起始处的地址,此地址指向内存中的对象,这就是“指针”。将一个对象变量的值赋给另一个对象变量时,不会复制对象,而是创建对同一对象的两个不同引用,对象的指针被复制到新变量,但不会像创建全新对象那样分配新的内存块。理解指针概念对使用Windows API非常有帮助。
  • 句柄概念 :句柄与指针类似,使用相同的数据类型,例如用 LongPtr 数据类型声明窗口句柄参数。但指针用于标识内存地址,而句柄用于唯一标识对象,如窗口、文件或其他系统资源。
  • 32位和64位系统中的指针 :在32位应用程序中,指针是32位内存地址,约有42.9亿种可能的值;在64位应用程序中,指针是64位内存地址,提供了两倍的空间和指数级更多的可能值。
  • VBA7的特殊关键字 :为应对从32位架构向64位的过渡以及应用程序和操作系统之间混合使用的需求,VBA7提供了两个特殊关键字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值