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

📄 access.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 4 页
字号:
        // 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){    wxLogTrace(wxT("access"), wxT("get_accRole"));    wxASSERT (m_pAccessible != NULL);    if (!m_pAccessible)        return E_FAIL;    if (varID.vt != VT_I4)    {        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accRole"));        return E_INVALIDARG;    }    VariantInit(pVarRole);    wxAccRole role = wxROLE_NONE;    wxAccStatus status = m_pAccessible->GetRole(varID.lVal, & role);    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_accRole(varID, pVarRole);                childAccessible->Release();                return hResult;            }            else if (m_pAccessible->GetIAccessibleStd())                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accRole(varID, pVarRole);        }        else if (m_pAccessible->GetIAccessibleStd())            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accRole (varID, pVarRole);    }    else    {        if (role == wxROLE_NONE)        {            pVarRole->vt = VT_EMPTY;            return S_OK;        }        pVarRole->lVal = wxConvertToWindowsRole(role);        pVarRole->vt = VT_I4;        return S_OK;    }    return E_NOTIMPL;}// Retrieves the current state of the specified object.// All objects support this property.STDMETHODIMP wxIAccessible::get_accState ( VARIANT varID, VARIANT* pVarState){    wxLogTrace(wxT("access"), wxT("get_accState"));    wxASSERT (m_pAccessible != NULL);    if (!m_pAccessible)        return E_FAIL;    if (varID.vt != VT_I4 && varID.vt != VT_EMPTY)    {        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accState"));        return E_INVALIDARG;    }    long wxstate = 0;    wxAccStatus status = m_pAccessible->GetState(varID.lVal, & wxstate);    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_accState(varID, pVarState);                childAccessible->Release();                return hResult;            }            else if (m_pAccessible->GetIAccessibleStd())                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accState(varID, pVarState);        }        else if (m_pAccessible->GetIAccessibleStd())            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accState (varID, pVarState);    }    else    {        long state = wxConvertToWindowsState(wxstate);        pVarState->lVal = state;        pVarState->vt = VT_I4;        return S_OK;    }    return E_NOTIMPL;}// Retrieves the value of the specified object.// Not all objects have a value.STDMETHODIMP wxIAccessible::get_accValue ( VARIANT varID, BSTR* pszValue){    wxLogTrace(wxT("access"), wxT("get_accValue"));    wxASSERT (m_pAccessible != NULL);    if (!m_pAccessible)        return E_FAIL;    if (varID.vt != VT_I4)    {        wxLogTrace(wxT("access"), wxT("Invalid arg for get_accValue"));        return E_INVALIDARG;    }    wxString strValue;    wxAccStatus status = m_pAccessible->GetValue(varID.lVal, & strValue);    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_accValue(varID, pszValue);                childAccessible->Release();                return hResult;            }            else if (m_pAccessible->GetIAccessibleStd())                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accValue(varID, pszValue);        }        else if (m_pAccessible->GetIAccessibleStd())            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->get_accValue (varID, pszValue);    }    else    {        wxBasicString basicString(strValue);        * pszValue = basicString.Get();        return S_OK;    }    return E_NOTIMPL;}// Modifies the selection or moves the keyboard focus of the// specified object. All objects that select or receive the// keyboard focus must support this method.STDMETHODIMP wxIAccessible::accSelect ( long flagsSelect, VARIANT varID ){    wxLogTrace(wxT("access"), wxT("get_accSelect"));    wxASSERT (m_pAccessible != NULL);    if (!m_pAccessible)        return E_FAIL;    if (varID.vt != VT_I4 && varID.vt != VT_EMPTY)    {        wxLogTrace(wxT("access"), wxT("Invalid arg for accSelect"));        return E_INVALIDARG;    }    wxAccSelectionFlags wxsel = wxConvertFromWindowsSelFlag(flagsSelect);    wxAccStatus status = m_pAccessible->Select(varID.lVal, wxsel);    if (status == wxACC_FAIL)        return E_FAIL;    if (status == wxACC_NOT_IMPLEMENTED)    {        // Try to use child object directly.        if (varID.lVal > 0 && varID.lVal > 0)        {            IAccessible* childAccessible = GetChildAccessible(varID.lVal);            if (childAccessible)            {                varID.lVal = 0;                HRESULT hResult = childAccessible->accSelect(flagsSelect, varID);                childAccessible->Release();                return hResult;            }            else if (m_pAccessible->GetIAccessibleStd())                return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->accSelect(flagsSelect, varID);        }        else if (m_pAccessible->GetIAccessibleStd())            return ((IAccessible*) m_pAccessible->GetIAccessibleStd())->accSelect(flagsSelect, varID);    }    else        return S_OK;    return E_NOTIMPL;}// Retrieves the object that has the keyboard focus. All objects// that receive the keyboard focus must support this property.STDMETHODIMP wxIAccessible::get_accFocus ( VARIANT* pVarID){    wxLogTrace(wxT("access"), wxT("get_accFocus"));    wxASSERT (m_pAccessible != NULL);    if (!m_pAccessible)        return E_FAIL;    wxAccessible* childObject = NULL;    int childId = 0;    VariantInit(pVarID);    wxAccStatus status = m_pAccessible->GetFocus(& childId, & childObject);    if (status == wxACC_FAIL)        return E_FAIL;    if (status == wxACC_NOT_IMPLEMENTED)    {        // Use standard interface instead.        IAccessible* stdInterface = (IAccessible*)m_pAccessible->GetIAccessibleStd();        if (!stdInterface)            return E_NOTIMPL;        else            return stdInterface->get_accFocus (pVarID);    }    if (childObject)    {        if (childObject == m_pAccessible)        {            pVarID->vt = VT_I4;            pVarID->lVal = CHILDID_SELF;            return S_OK;        }        else        {            wxIAccessible* childIA = childObject->GetIAccessible();            if (!childIA)                return E_NOTIMPL;            if (childIA->QueryInterface(IID_IDispatch, (LPVOID*) & pVarID->pdispVal) != S_OK)                return E_FAIL;            pVarID->vt = VT_DISPATCH;            return S_OK;        }    }    else if (childId > 0)    {        pVarID->vt = VT_I4;        pVarID->lVal = childId;        return S_OK;    }    else    {        pVarID->vt = VT_EMPTY;        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}// Retrieves the selected children of this object. All objects// selected must support this property.STDMETHODIMP wxIAccessible::get_accSelection ( VARIANT * pVarChildren){#if wxUSE_VARIANT    wxLogTrace(wxT("access"), wxT("get_accSelection"));    wxASSERT (m_pAccessible != NULL);    if (!m_pAccessible)        return E_FAIL;    VariantInit(pVarChildren);    wxVariant selections;    wxAccStatus status = m_pAccessible->GetSelections(& selections);    if (status == wxACC_FAIL)        return E_FAIL;    if (status == wxACC_NOT_IMPLEMENTED)    {        // Use standard interface instead.        IAccessible* stdInterface = (IAccessible*)m_pAccessible->GetIAccessibleStd();        if (!stdInterface)            return E_NOTIMPL;        else            return stdInterface->get_accSelection (pVarChildren);    }    else    {        if (selections.GetType() == wxT("long"))        {            pVarChildren->vt = VT_I4;            pVarChildren->lVal = selections.GetLong();

⌨️ 快捷键说明

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