如何在UI 自动化片段提供程序中启用导航

本主题包含的示例代码演示如何在 Microsoft UI 自动化 提供程序中为片段中的元素启用导航。

以下示例代码为自定义列表控件中的列表项实现 IRawElementProviderFragment::Navigate 方法。 父元素是自定义列表控件,同级元素是列表中的其他项。 如果指定方向上没有元素,则方法将 pRetVal 参数设置为 NULL

// Implementation of IRawElementProviderFragment::Navigate.
// Enables UI Automation to locate the element in the tree.
HRESULT STDMETHODCALLTYPE ListItemProvider::Navigate(NavigateDirection direction, IRawElementProviderFragment ** pRetVal)
{
    if (pRetVal == NULL) 
    {
        return E_INVALIDARG;
    }

    IRawElementProviderFragment* pFrag = NULL;
    switch(direction)
    {
        case NavigateDirection_Parent:
            pFrag = (IRawElementProviderFragment*) m_parentProvider;       
            break;

        case NavigateDirection_NextSibling:
            pFrag = (IRawElementProviderFragment*) m_nextSiblingProvider;
            break;

        case NavigateDirection_PreviousSibling:  
            pFrag = (IRawElementProviderFragment*) m_previousSiblingProvider;
            break;
    }
    *pRetVal = pFrag;
    if (pFrag != NULL) 
    {
        pFrag->AddRef();
    }
    return S_OK;
}              

概念性

实现Server-Side UI 自动化提供程序

UI 自动化提供程序的帮助主题