Метод IAccessible::accLocation (oleacc.h)

Метод IAccessible::accLocation извлекает текущее расположение указанного объекта на экране. Все визуальные объекты должны поддерживать этот метод. Звуковые объекты не поддерживают этот метод.

Синтаксис

HRESULT accLocation(
  [out] long    *pxLeft,
  [out] long    *pyTop,
  [out] long    *pcxWidth,
  [out] long    *pcyHeight,
  [in]  VARIANT varChild
);

Параметры

[out] pxLeft

Тип: long*

Адрес (в физических координатах экрана) переменной, которая получает координату X верхней левой границы расположения объекта.

[out] pyTop

Тип: long*

Адрес (в физических координатах экрана) переменной, которая получает координату Y верхней левой границы расположения объекта.

[out] pcxWidth

Тип: long*

Адрес (в пикселях) переменной, которая получает ширину объекта.

[out] pcyHeight

Тип: long*

Адрес (в пикселях) переменной, которая получает высоту объекта.

[in] varChild

Тип: VARIANT

Указывает, должно ли возвращать сервер расположение объекта или одного из дочерних элементов объекта. Этот параметр CHILDID_SELF (для получения сведений об объекте) или идентификатор дочернего элемента (для получения сведений о дочернем элементе объекта). Дополнительные сведения об инициализации структуры VARIANT см. в разделе Использование дочерних идентификаторов в параметрах.

Возвращаемое значение

Тип: HRESULT

Возвращает значение S_OK, если операция завершилась успешно. Клиенты всегда должны проверка, что выходные параметры содержат допустимые значения.

В противном случае возвращает одно из значений в следующей таблице или другой стандартный код ошибки COM. Дополнительные сведения см. в разделе Проверка возвращаемых значений IAccessible.

Ошибка Описание
DISP_E_MEMBERNOTFOUND
Объект не поддерживает этот метод.
E_INVALIDARG
Аргумент является недопустимым.

Комментарии

Этот метод извлекает ограничивающий прямоугольник объекта. Если объект имеет непрямоугольную форму, то этот метод возвращает наименьший прямоугольник, полностью охватывающий всю область объекта. Для непрямоугольных объектов координаты ограничивающего прямоугольника объекта могут завершиться ошибкой при тестировании с помощью IAccessible::accHitTest. Примерами таких непрямоугольных объектов являются элементы представления списка в режиме больших значков, где один элемент имеет прямоугольник для значка и другой прямоугольник для текста значка. Так как accLocation возвращает ограничивающий прямоугольник, не все точки в этом прямоугольнике будут находиться в пределах фактических границ объекта. Некоторые точки в ограничивающем прямоугольнике могут не находиться в объекте . Дополнительные сведения см. в разделах Навигация через тестирование попадания и Расположение экрана.

Примечание: Этот метод возвращает ширину и высоту. Если вам нужны правые и нижние координаты, вычислите их, используя правое = левое + ширина, а снизу — сверху + высота.

Пример сервера

В следующем примере показана возможная реализация метода для настраиваемого списка, элементы которого являются дочерними элементами. Для самого списка вызов передается стандартному объекту со специальными возможностями, который возвращает экранные координаты окна.

// m_pStdAccessibleObject is the standard accessible object for the control window. 
// m_pControl is the object that represents the control. Its GetItemRect method  
//   retrieves the screen coordinates of the specified item in a zero-based collection. 
// 
HRESULT STDMETHODCALLTYPE AccServer::accLocation( 
    long *pxLeft,
    long *pyTop,
    long *pcxWidth,
    long *pcyHeight,
    VARIANT varChild)
{
    *pxLeft = 0;
    *pyTop = 0;
    *pcxWidth = 0;
    *pcyHeight = 0;
    if (varChild.vt != VT_I4)
    {
        return E_INVALIDARG;
    }
    if (varChild.lVal == CHILDID_SELF)
    {
        return m_pStdAccessibleObject->accLocation(pxLeft, pyTop, pcxWidth, pcyHeight, varChild);
    }
    else
    {
        RECT rect;
        if (m_pControl->GetItemRect(varChild.lVal - 1, &rect) == FALSE)
        {
            return E_INVALIDARG;
        }
        else
        {
            *pxLeft = rect.left;
            *pyTop = rect.top;
            *pcxWidth = rect.right - rect.left;
            *pcyHeight = rect.bottom - rect.top;
            return S_OK;        
        }
    }
};

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header oleacc.h
Библиотека Oleacc.lib
DLL Oleacc.dll
Распространяемые компоненты Активные специальные возможности 1.3 RDK в Windows NT 4.0 с пакетом обновления 6 (SP6) и более поздних версий и Windows 95

См. также раздел

Активные специальные возможности и масштабирование экрана Windows Vista

IAccessible

IAccessible::accHitTest

Навигация по тестированию попадания и расположению экрана

ВАРИАНТ