Server-Side UI 자동화 공급자를 노출하는 방법
이 항목에는 사용자 지정 컨트롤에 대한 서버 쪽 Microsoft UI 자동화 공급자를 노출하는 방법을 보여 주는 예제 코드가 포함되어 있습니다.
Microsoft UI 자동화 공급자 애플리케이션에 WM_GETOBJECT 메시지를 보내 공급자가 지원하는 액세스 가능한 개체에 대한 정보를 검색합니다. UI 자동화 클라이언트가IUIAutomation::ElementFromHandle, ElementFromPoint 및 GetFocusedElement를 호출하고 클라이언트가 등록한 이벤트를 처리할 때 WM_GETOBJECT 보냅니다.
공급자가 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;
}
관련 항목