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

Метод IAccessible::accDoDefaultAction выполняет действие указанного объекта по умолчанию. Не все объекты имеют действия по умолчанию.

Синтаксис

HRESULT accDoDefaultAction(
  [in] VARIANT varChild
);

Параметры

[in] varChild

Тип: VARIANT

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

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

Тип: HRESULT

Возвращает значение S_OK, если операция завершилась успешно.

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

Ошибка Описание
DISP_E_MEMBERNOTFOUND
Объект не поддерживает метод . Это значение возвращается для элементов управления, которые не выполняют действий, таких как изменение полей.
E_INVALIDARG
Аргумент является недопустимым.

Комментарии

Клиенты получают строку, описывающую действие объекта по умолчанию, вызывая метод IAccess::get_accDefaultAction.

Обратите внимание на клиентские разработчики: При использовании в элементе меню стандартного системного меню accDoDefaultAction возвращает S_OK но не выполняет действие, если символ, используемый в клавише доступа (подчеркнутый символ в тексте имени пункта меню, также называемый мнемоническим), ?, !, @, или любой другой символ, требующий клавиши SHIFT или другой клавиши-модификатора. Это также происходит на международных клавиатурах с символом клавиши доступа, который требует нажатия клавиши ALT GR. Это не проблема для меню в других приложениях, таких как Microsoft Office или Windows Internet Обозреватель. Дополнительные сведения о ключах доступа см. в разделе IAccessible::get_accKeyboardShortcut.

Кроме того, хотя accDoDefaultAction должен возвращать немедленно, некоторые реализации блокируют возврат. Например, если при щелчке по ссылке отображается диалоговое окно, некоторые реализации блокируют возврат до тех пор, пока диалоговое окно не будет закрыто. Такие задержки могут помешать клиентским приложениям обрабатывать диалоговое окно. Серверы должны избегать реализаций, возвращающих блок.

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

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

// Assume a previous definition such as this: 
// #define CUSTOMLB_DEFERDOUBLECLICK   (WM_USER + 1) 

HRESULT STDMETHODCALLTYPE AccServer::accDoDefaultAction( 
    VARIANT varChild) 
{
    if (varChild.vt != VT_I4)
    {
        return E_INVALIDARG;
    }
    if (varChild.lVal != CHILDID_SELF)
    {
        // It is assumed that the control does its own checking to see which 
        // item has the focus when it receives this message.
        PostMessage(m_hwnd, CUSTOMLB_DEFERDOUBLECLICK, 0, 0);
    }
    return S_OK;
};

Пример клиента

В следующем примере функция выполняет действие по умолчанию для элемента управления .

HRESULT DoAction(IAccessible* pAcc)
{
        VARIANT varId;
        varId.vt = VT_I4;
        varId.lVal = CHILDID_SELF;
        return pAcc->accDoDefaultAction(varId);
}

Требования

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

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

Приложение А. Справочник по поддерживаемым элементам пользовательского интерфейса

Свойство DefaultAction

IAccessible

IAccessible::get_accDefaultAction

IAccessible::get_accKeyboardShortcut

ВАРИАНТ