⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 access.cpp

📁 Wxpython Implemented on Windows CE, Source code
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        }
        else
        {
            // This doesn't seem to be allowed, despite the documentation,
            // so we handle it higher up by using the standard interface.
            wxLogTrace(wxT("access"), wxT("Returning NULL parent because there was none"));
            *ppDispParent = NULL;
            return S_FALSE;
        }
    }

    #if 0
    // all cases above already cause some return action so below line
    // is unreachable and cause unnecessary warning
    return E_NOTIMPL;
    #endif
}

// Performs the object's default action. Not all objects have a default
// action.

STDMETHODIMP wxIAccessible::accDoDefaultAction(VARIANT varID)
{
    wxLogTrace(wxT("access"), wxT("accDoDefaultAction"));
    wxASSERT (m_pAccessible != NULL);
    if (!m_pAccessible)
        return E_FAIL;

    if (varID.vt != VT_I4)
    {
        wxLogTrace(wxT("access"), wxT("Invalid arg for accDoDefaultAction"));
        return E_INVALIDARG;
    }

    wxAccStatus status = m_pAccessible->DoDefaultAction(varID.lVal);
    if (status == wxACC_FAIL)
        return E_FAIL;

    if (status == wxACC_NOT_SUPPORTED)
        return DISP_E_MEMBERNOTFOUND;

    if (status == wxACC_NOT_IMPLEMENTED)
    {
        // Try to use child object directly.
        if (varID.lVal > 0)
        {
            IAccessible* childAccessible = GetChildAccessible(varID.lVal);
            if (childAccessible)
            {
                varID.lVal = 0;
                HRESULT hResult = childAccessible->accDoDefaultAction(varID);
                childAccessible->Release();
                return hResult;
            }
            else if (m_pAccessible->GetIAccessibleStd())
                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->accDoDefaultAction(varID);
        }
        else if (m_pAccessible->GetIAccessibleStd())
            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->accDoDefaultAction(varID);
    }
    return E_FAIL;
}

// Retrieves a string that describes the object's default action.
// Not all objects have a default action.

STDMETHODIMP wxIAccessible::get_accDefaultAction ( VARIANT varID, BSTR* pszDefaultAction)
{
    wxLogTrace(wxT("access"), wxT("get_accDefaultAction"));
    wxASSERT (m_pAccessible != NULL);
    if (!m_pAccessible)
        return E_FAIL;

    if (varID.vt != VT_I4)
    {
        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accDefaultAction"));
        return E_INVALIDARG;
    }

    wxString defaultAction;
    wxAccStatus status = m_pAccessible->GetDefaultAction(varID.lVal, & defaultAction);
    if (status == wxACC_FAIL)
        return E_FAIL;

    if (status == wxACC_NOT_SUPPORTED)
        return DISP_E_MEMBERNOTFOUND;

    if (status == wxACC_NOT_IMPLEMENTED)
    {
        // Try to use child object directly.
        if (varID.lVal > 0)
        {
            IAccessible* childAccessible = GetChildAccessible(varID.lVal);
            if (childAccessible)
            {
                varID.lVal = 0;
                HRESULT hResult = childAccessible->get_accDefaultAction(varID, pszDefaultAction);
                childAccessible->Release();
                return hResult;
            }
            else if (m_pAccessible->GetIAccessibleStd())
                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accDefaultAction(varID, pszDefaultAction);
        }
        else if (m_pAccessible->GetIAccessibleStd())
            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accDefaultAction(varID, pszDefaultAction);
    }
    else
    {
        if (defaultAction.IsEmpty())
        {
            * pszDefaultAction = NULL;
            return S_FALSE;
        }
        else
        {
            wxBasicString basicString(defaultAction);
            * pszDefaultAction = basicString.Get();
            return S_OK;
        }
    }
    return E_FAIL;
}

// Retrieves a string that describes the visual appearance of the specified object.
// Not all objects have a description.

STDMETHODIMP wxIAccessible::get_accDescription ( VARIANT varID, BSTR* pszDescription)
{
    wxLogTrace(wxT("access"), wxT("get_accDescription"));
    wxASSERT (m_pAccessible != NULL);
    if (!m_pAccessible)
        return E_FAIL;

    if (varID.vt != VT_I4)
    {
        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accDescription"));
        return E_INVALIDARG;
    }

    wxString description;
    wxAccStatus status = m_pAccessible->GetDescription(varID.lVal, & description);
    if (status == wxACC_FAIL)
        return E_FAIL;

    if (status == wxACC_NOT_IMPLEMENTED)
    {
        // Try to use child object directly.
        if (varID.lVal > 0)
        {
            IAccessible* childAccessible = GetChildAccessible(varID.lVal);
            if (childAccessible)
            {
                varID.lVal = 0;
                HRESULT hResult = childAccessible->get_accDescription(varID, pszDescription);
                childAccessible->Release();
                return hResult;
            }
            else if (m_pAccessible->GetIAccessibleStd())
                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accDescription(varID, pszDescription);
        }
        else if (m_pAccessible->GetIAccessibleStd())
            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accDescription(varID, pszDescription);
    }
    else
    {
        if (description.empty())
        {
            * pszDescription = NULL;
            return S_FALSE;
        }
        else
        {
            wxBasicString basicString(description);
            * pszDescription = basicString.Get();
            return S_OK;
        }
    }
    return E_NOTIMPL;
}

// Retrieves an object's Help property string.
// Not all objects support this property.

STDMETHODIMP wxIAccessible::get_accHelp ( VARIANT varID, BSTR* pszHelp)
{
    wxLogTrace(wxT("access"), wxT("get_accHelp"));
    wxASSERT (m_pAccessible != NULL);
    if (!m_pAccessible)
        return E_FAIL;

    if (varID.vt != VT_I4)
    {
        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accHelp"));
        return E_INVALIDARG;
    }

    wxString helpString;
    wxAccStatus status = m_pAccessible->GetHelpText(varID.lVal, & helpString);
    if (status == wxACC_FAIL)
        return E_FAIL;

    if (status == wxACC_NOT_IMPLEMENTED)
    {
        // Try to use child object directly.
        if (varID.lVal > 0)
        {
            IAccessible* childAccessible = GetChildAccessible(varID.lVal);
            if (childAccessible)
            {
                varID.lVal = 0;
                HRESULT hResult = childAccessible->get_accHelp(varID, pszHelp);
                childAccessible->Release();
                return hResult;
            }
            else if (m_pAccessible->GetIAccessibleStd())
                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accHelp(varID, pszHelp);
        }
        else if (m_pAccessible->GetIAccessibleStd())
            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accHelp (varID, pszHelp);
    }
    else
    {
        if (helpString.empty())
        {
            * pszHelp = NULL;
            return S_FALSE;
        }
        else
        {
            wxBasicString basicString(helpString);
            * pszHelp = basicString.Get();
            return S_OK;
        }
    }
    return E_NOTIMPL;
}

// Retrieves the full path of the WinHelp file associated with the specified
// object and the identifier of the appropriate topic within that file.
// Not all objects support this property.
// NOTE: not supported by wxWidgets at this time. Use
// GetHelpText instead.

STDMETHODIMP wxIAccessible::get_accHelpTopic ( BSTR* pszHelpFile, VARIANT varChild, long* pidTopic)
{
    wxLogTrace(wxT("access"), wxT("get_accHelpTopic"));
    wxASSERT (m_pAccessible != NULL);
    if (!m_pAccessible)
        return E_FAIL;

    if (varChild.vt != VT_I4)
    {
        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accHelpTopic"));
        return E_INVALIDARG;
    }

    wxAccStatus status = wxACC_NOT_IMPLEMENTED;
    if (status == wxACC_FAIL)
        return E_FAIL;

    if (status == wxACC_NOT_IMPLEMENTED)
    {
        // Try to use child object directly.
        if (varChild.lVal > 0)
        {
            IAccessible* childAccessible = GetChildAccessible(varChild.lVal);
            if (childAccessible)
            {
                varChild.lVal = 0;
                HRESULT hResult = childAccessible->get_accHelpTopic(pszHelpFile, varChild, pidTopic);
                childAccessible->Release();
                return hResult;
            }
            else if (m_pAccessible->GetIAccessibleStd())
                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accHelpTopic(pszHelpFile, varChild, pidTopic);
        }
        else if (m_pAccessible->GetIAccessibleStd())
            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accHelpTopic (pszHelpFile, varChild, pidTopic);
    }
    return E_NOTIMPL;
}

// Retrieves the specified object's shortcut key or access key, also known as
// the mnemonic. All objects that have a shortcut key or access key support
// this property.

STDMETHODIMP wxIAccessible::get_accKeyboardShortcut ( VARIANT varID, BSTR* pszKeyboardShortcut)
{
    wxLogTrace(wxT("access"), wxT("get_accKeyboardShortcut"));
    *pszKeyboardShortcut = NULL;

    wxASSERT (m_pAccessible != NULL);
    if (!m_pAccessible)
        return E_FAIL;

    if (varID.vt != VT_I4)
    {
        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accKeyboardShortcut"));
        return E_INVALIDARG;
    }

    wxString keyboardShortcut;
    wxAccStatus status = m_pAccessible->GetKeyboardShortcut(varID.lVal, & keyboardShortcut);
    if (status == wxACC_FAIL)
        return E_FAIL;

    if (status == wxACC_NOT_IMPLEMENTED)
    {
        // Try to use child object directly.
        if (varID.lVal > 0)
        {
            IAccessible* childAccessible = GetChildAccessible(varID.lVal);
            if (childAccessible)
            {
                varID.lVal = 0;
                HRESULT hResult = childAccessible->get_accKeyboardShortcut(varID, pszKeyboardShortcut);
                childAccessible->Release();
                return hResult;
            }
            else if (m_pAccessible->GetIAccessibleStd())
                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accKeyboardShortcut(varID, pszKeyboardShortcut);
        }
        else if (m_pAccessible->GetIAccessibleStd())
            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accKeyboardShortcut (varID, pszKeyboardShortcut);
    }
    else
    {
        if (keyboardShortcut.empty())
        {
            * pszKeyboardShortcut = NULL;
            return S_FALSE;
        }
        else
        {
            wxBasicString basicString(keyboardShortcut);
            * pszKeyboardShortcut = basicString.Get();
            return S_OK;
        }
    }
    return E_NOTIMPL;
}

// Retrieves the name of the specified object.
// All objects support this property.

STDMETHODIMP wxIAccessible::get_accName ( VARIANT varID, BSTR* pszName)
{
    wxLogTrace(wxT("access"), wxT("get_accName"));
    *pszName = NULL;

    wxASSERT (m_pAccessible != NULL);
    if (!m_pAccessible)
        return E_FAIL;

    if (varID.vt != VT_I4)
    {
        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accName"));
        return E_INVALIDARG;
    }

    wxString name;

    wxAccStatus status = m_pAccessible->GetName(varID.lVal, & name);

    if (status == wxACC_FAIL)
        return E_FAIL;

    if (status == wxACC_NOT_IMPLEMENTED)
    {
        // Try to use child object directly.
        if (varID.lVal > 0)
        {
            IAccessible* childAccessible = GetChildAccessible(varID.lVal);
            if (childAccessible)
            {
                varID.lVal = 0;
                HRESULT hResult = childAccessible->get_accName(varID, pszName);
                childAccessible->Release();
                return hResult;
            }
            else if (m_pAccessible->GetIAccessibleStd())
                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accName(varID, pszName);
        }
        else if (m_pAccessible->GetIAccessibleStd())
            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accName (varID, pszName);
    }
    else
    {
        wxBasicString basicString(name);
        *pszName = basicString.Get();
        return S_OK;
    }
    return E_NOTIMPL;
}

// Retrieves information that describes the role of the specified object.
// All objects support this property.

STDMETHODIMP wxIAccessible::get_accRole ( VARIANT varID, VARIANT* pVarRole)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -