Рекомендации по использованию безопасных массивов

Многие методы интерфейса API Microsoft модель автоматизации пользовательского интерфейса принимают аргументы, называемые безопасными массивами, типа данных SAFEARRAY. В этом разделе описываются рекомендации по использованию безопасных массивов в приложениях модель автоматизации пользовательского интерфейса.

Клиенты

Все безопасные массивы, используемые с модель автоматизации пользовательского интерфейса методами клиентского API, являются одномерными массивами с нуля. Чтобы создать безопасный массив для метода клиента модель автоматизации пользовательского интерфейса, используйте функцию SafeArrayCreateVector, а для чтения и записи в безопасный массив используйте функции SafeArrayGetElement и SafeArrayPutElement. Завершив использование безопасного массива, всегда уничтожайте его с помощью функции SafeArrayDe, независимо от того, создали ли вы безопасный массив или получили его от модель автоматизации пользовательского интерфейса метода клиента.

Несколько модель автоматизации пользовательского интерфейса методов, включая методы извлечения свойств, такие как GetCurrentPropertyValue, извлекают variants, которые могут содержать структуры POINT или UiaRect. ТОЧКА упаковывается в VARIANT в виде безопасного массива двойных значений (VT_R8) с элементом x по индексу 0 и элементом y по индексу 1. Аналогичным образом UiaRect упаковывается в VARIANT в виде безопасного массива двойных значений с левым, верхним, шириной и высотой по индексам от 0 до 3 соответственно. Для массива структур UiaRect безопасный массив содержит последовательный массив из четырех двойных значений для каждого UiaRect. Элементы левого, верхнего, ширины и высоты первого объекта UiaRect занимают индекс от 0 до 3, элементы второго прямоугольника занимают индекс от 4 до 7 и т. д.

Интерфейс IUIAutomation включает следующие методы преобразования между SAFEARRAY и различными другими типами данных.

Метод Описание
IUIAutomation::IntNativeArrayToSafeArray Преобразует массив целых чисел в SAFEARRAY.
IUIAutomation::IntSafeArrayToNativeArray Преобразует SAFEARRAY целых чисел в массив.
IUIAutomation::SafeArrayToRectNativeArray Преобразует объект SAFEARRAY , содержащий координаты прямоугольника, в массив типа RECT.

 

Поставщики

Поставщик должен реализовать ряд методов интерфейса, которые модель автоматизации пользовательского интерфейса вызовы для получения сведений от поставщика. Во многих случаях эта информация состоит из массива значений. Чтобы вернуть массив для модель автоматизации пользовательского интерфейса, поставщик должен упаковать массив в структуру SAFEARRAY. Элементы массива должны иметь ожидаемый тип данных и отображаться в ожидаемом порядке.

Основные понятия

Общие сведения о свойствах автоматизированного пользовательского интерфейса

Основы модели автоматизации пользовательского интерфейса