1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski #ifndef __ENUMVARIANT_H_ 23*b1cdbd2cSJim Jagielski #define __ENUMVARIANT_H_ 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski #define WNT 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include "resource.h" // main symbols 28*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessible.hpp> 29*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleSelection.hpp> 30*b1cdbd2cSJim Jagielski #include "UAccCOM2.h" 31*b1cdbd2cSJim Jagielski #include <AccObjectManagerAgent.hxx> 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski using namespace com::sun::star::accessibility; 34*b1cdbd2cSJim Jagielski using namespace com::sun::star::uno; 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski #include <vector> 37*b1cdbd2cSJim Jagielski #include <algorithm> 38*b1cdbd2cSJim Jagielski using namespace std; 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski /** 41*b1cdbd2cSJim Jagielski * CEnumVariant implements IEnumVARIANT interface. 42*b1cdbd2cSJim Jagielski */ 43*b1cdbd2cSJim Jagielski class ATL_NO_VTABLE CEnumVariant : 44*b1cdbd2cSJim Jagielski public CComObjectRootEx<CComMultiThreadModel>, 45*b1cdbd2cSJim Jagielski public CComCoClass<CEnumVariant, &CLSID_EnumVariant>, 46*b1cdbd2cSJim Jagielski public IDispatchImpl<IEnumVariant, &IID_IEnumVariant, &LIBID_UACCCOMLib> 47*b1cdbd2cSJim Jagielski { 48*b1cdbd2cSJim Jagielski public: CEnumVariant()49*b1cdbd2cSJim Jagielski CEnumVariant() 50*b1cdbd2cSJim Jagielski :m_lLBound(0), 51*b1cdbd2cSJim Jagielski pUNOInterface(NULL), 52*b1cdbd2cSJim Jagielski m_pXAccessibleSelection(NULL) 53*b1cdbd2cSJim Jagielski { 54*b1cdbd2cSJim Jagielski m_lCurrent = m_lLBound; 55*b1cdbd2cSJim Jagielski } 56*b1cdbd2cSJim Jagielski ~CEnumVariant()57*b1cdbd2cSJim Jagielski virtual ~CEnumVariant() {}; 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski DECLARE_REGISTRY_RESOURCEID(IDR_ENUMVARIANT) 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski DECLARE_PROTECT_FINAL_CONSTRUCT() 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski BEGIN_COM_MAP(CEnumVariant) 64*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY(IEnumVariant) 65*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY(IEnumVARIANT) 66*b1cdbd2cSJim Jagielski END_COM_MAP() 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski // IEnumVariant 69*b1cdbd2cSJim Jagielski public: 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski STDMETHOD(ClearEnumeration)(); 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski // IEnumVARIANT 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski // 76*b1cdbd2cSJim Jagielski HRESULT STDMETHODCALLTYPE Next(ULONG cElements,VARIANT __RPC_FAR *pvar,ULONG __RPC_FAR *pcElementFetched); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski // 79*b1cdbd2cSJim Jagielski HRESULT STDMETHODCALLTYPE Skip(ULONG cElements); 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski // 82*b1cdbd2cSJim Jagielski HRESULT STDMETHODCALLTYPE Reset( void); 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski // 85*b1cdbd2cSJim Jagielski HRESULT STDMETHODCALLTYPE Clone(IEnumVARIANT __RPC_FAR *__RPC_FAR *ppenum); 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski // IEnumVariant 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski // 90*b1cdbd2cSJim Jagielski HRESULT STDMETHODCALLTYPE PutSelection(long pXSelection); 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski // 93*b1cdbd2cSJim Jagielski static HRESULT STDMETHODCALLTYPE Create(CEnumVariant __RPC_FAR *__RPC_FAR *ppenum); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski // 96*b1cdbd2cSJim Jagielski long GetCountOfElements(); 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski private: 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski long m_lCurrent; 101*b1cdbd2cSJim Jagielski long m_lLBound; 102*b1cdbd2cSJim Jagielski XAccessible* pUNOInterface; // XAccessible. 103*b1cdbd2cSJim Jagielski Reference<XAccessibleSelection> m_pXAccessibleSelection; // Selection. 104*b1cdbd2cSJim Jagielski }; 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski #endif //__ENUMVARIANT_H_ 107