HRESULT STDMETHODCALLTYPE CMenuAccessible::get_accDescription( VARIANT varChild, BSTR *pszDescription ) { return get_accName(varChild,pszDescription); }
HRESULT STDMETHODCALLTYPE QWindowsAccessible::Invoke(long dispIdMember, const _GUID &, unsigned long, unsigned short wFlags, tagDISPPARAMS *pDispParams, tagVARIANT *pVarResult, tagEXCEPINFO *, unsigned int *) { HRESULT hr = DISP_E_MEMBERNOTFOUND; switch (dispIdMember) { case DISPID_ACC_PARENT: if (wFlags == DISPATCH_PROPERTYGET) { if (!pVarResult) return E_INVALIDARG; hr = get_accParent(&pVarResult->pdispVal); } else { hr = DISP_E_MEMBERNOTFOUND; } break; case DISPID_ACC_CHILDCOUNT: if (wFlags == DISPATCH_PROPERTYGET) { if (!pVarResult) return E_INVALIDARG; hr = get_accChildCount(&pVarResult->lVal); } else { hr = DISP_E_MEMBERNOTFOUND; } break; case DISPID_ACC_CHILD: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accChild(pDispParams->rgvarg[0], &pVarResult->pdispVal); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_NAME: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accName(pDispParams->rgvarg[0], &pVarResult->bstrVal); else if (wFlags == DISPATCH_PROPERTYPUT) hr = put_accName(pDispParams->rgvarg[0], pVarResult->bstrVal); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_VALUE: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accValue(pDispParams->rgvarg[0], &pVarResult->bstrVal); else if (wFlags == DISPATCH_PROPERTYPUT) hr = put_accValue(pDispParams->rgvarg[0], pVarResult->bstrVal); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_DESCRIPTION: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accDescription(pDispParams->rgvarg[0], &pVarResult->bstrVal); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_ROLE: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accRole(pDispParams->rgvarg[0], pVarResult); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_STATE: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accState(pDispParams->rgvarg[0], pVarResult); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_HELP: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accHelp(pDispParams->rgvarg[0], &pVarResult->bstrVal); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_HELPTOPIC: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accHelpTopic(&pDispParams->rgvarg[2].bstrVal, pDispParams->rgvarg[1], &pDispParams->rgvarg[0].lVal); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_KEYBOARDSHORTCUT: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accKeyboardShortcut(pDispParams->rgvarg[0], &pVarResult->bstrVal); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_FOCUS: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accFocus(pVarResult); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_SELECTION: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accSelection(pVarResult); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_DEFAULTACTION: if (wFlags == DISPATCH_PROPERTYGET) hr = get_accDefaultAction(pDispParams->rgvarg[0], &pVarResult->bstrVal); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_SELECT: if (wFlags == DISPATCH_METHOD) hr = accSelect(pDispParams->rgvarg[1].lVal, pDispParams->rgvarg[0]); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_LOCATION: if (wFlags == DISPATCH_METHOD) hr = accLocation(&pDispParams->rgvarg[4].lVal, &pDispParams->rgvarg[3].lVal, &pDispParams->rgvarg[2].lVal, &pDispParams->rgvarg[1].lVal, pDispParams->rgvarg[0]); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_NAVIGATE: if (wFlags == DISPATCH_METHOD) hr = accNavigate(pDispParams->rgvarg[1].lVal, pDispParams->rgvarg[0], pVarResult); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_HITTEST: if (wFlags == DISPATCH_METHOD) hr = accHitTest(pDispParams->rgvarg[1].lVal, pDispParams->rgvarg[0].lVal, pVarResult); else hr = DISP_E_MEMBERNOTFOUND; break; case DISPID_ACC_DODEFAULTACTION: if (wFlags == DISPATCH_METHOD) hr = accDoDefaultAction(pDispParams->rgvarg[0]); else hr = DISP_E_MEMBERNOTFOUND; break; default: hr = DISP_E_MEMBERNOTFOUND; break; } if (!SUCCEEDED(hr)) { return hr; } return hr; }