使用安全数组的最佳做法
Microsoft UI 自动化 API 的许多接口方法采用名为 SAFEARRAY 数据类型的安全数组的参数。 本主题介绍在UI 自动化应用程序中使用安全数组的最佳做法。
客户端
与 UI 自动化 客户端 API 方法一起使用的所有安全数组都是从零开始的一维数组。 若要为 UI 自动化 客户端方法创建安全数组,请使用 SafeArrayCreateVector 函数,若要从安全数组读取和写入安全数组,请使用 SafeArrayGetElement 和 SafeArrayPutElement 函数。 使用完安全数组后,始终使用 SafeArrayDestroy 函数销毁它,无论是创建安全数组还是从UI 自动化客户端方法接收它。
几种UI 自动化方法(包括 GetCurrentPropertyValue 等属性检索方法)检索可以包含 POINT 或 UiaRect 结构的 VARIANT。 POINT 作为安全双精度数组打包到 VARIANT 中, (VT_R8) 索引为 0 处的 x 成员,索引为 1 处的 y 成员。 同样, UiaRect 作为安全双精度值数组打包到 VARIANT 中,其 左侧、 顶部、 宽度和 高度 成员分别位于索引 0 到 3。 对于 UiaRect 结构的数组,安全数组包含每个 UiaRect 的四个双精度序列数组。 第一个 UiaRect 的左成员、顶部成员、宽度成员和高度成员占据索引 0 到 3,第二个矩形的成员占据索引 4 到 7,依此而论。
IUIAutomation 接口包含以下方法,用于在 SAFEARRAY 和其他各种数据类型之间进行转换。
方法 | 说明 |
---|---|
IUIAutomation::IntNativeArrayToSafeArray | 将整数数组转换为 SAFEARRAY。 |
IUIAutomation::IntSafeArrayToNativeArray | 将 SAFEARRAY 的整数转换为数组。 |
IUIAutomation::SafeArrayToRectNativeArray | 将包含矩形坐标的 SAFEARRAY 转换为 RECT 类型的数组。 |
提供程序
提供程序必须实现许多接口方法,这些方法UI 自动化调用从提供程序检索信息。 很多时候,此信息由值数组组成。 若要将数组返回到UI 自动化,提供程序必须将该数组打包到 SAFEARRAY 结构中。 数组元素必须是预期的数据类型,并且必须按预期顺序显示。
相关主题
-
概念性