Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе содержится пример кода, показывающий, как предоставить доступ к серверному поставщику Microsoft UI Automation для самодельного элемента управления.
Служба автоматизации пользовательского интерфейса Майкрософт отправляет WM_GETOBJECT сообщение приложению поставщика, чтобы получить сведения о доступном объекте, поддерживаемом поставщиком. Служба автоматизации пользовательского интерфейса отправляет WM_GETOBJECT при вызове клиентом IUIAutomation::ElementFromHandle, ElementFromPointи GetFocusedElement, а также при обработке событий, для которых зарегистрирован клиент.
Когда поставщик получает сообщение WM_GETOBJECT, он должен проверить, равен ли параметр lParam параметру UiaRootObjectId. Если это так, поставщик должен вернуть интерфейс IRawElementProviderSimple. Поставщик возвращает интерфейс, вызвав функцию UiaReturnRawElementProvider.
В следующем примере показано, как реагировать на WM_GETOBJECT.
// Expose the custom button's server-side provider to UI Automation.
case WM_GETOBJECT:
{
// If lParam matches UiaRootObjectId, return IRawElementProviderSimple.
if (static_cast<long>(lParam) == static_cast<long>(UiaRootObjectId))
{
// Retrieve the pointer to the custom button object from the
// window data.
CustomButton* pControl = reinterpret_cast<CustomButton*>(
GetWindowLongPtr(hwnd, GWLP_USERDATA));
// Call an application-defined method to get the
// IRawElementProviderSimple pointer.
IRawElementProviderSimple* pRootProvider =
pControl->GetUIAutomationProvider(hwnd);
// Return the IRawElementProviderSimple pointer to UI Automation.
return UiaReturnRawElementProvider(hwnd, wParam, lParam,
pRootProvider);
}
return 0;
}
Связанные разделы
-
концептуальные
-
Темы How-To для поставщиков автоматизации пользовательского интерфейса