2025-11-28 00:35:46 +09:00

56 lines
2.5 KiB
C++

// Copyright (c) Microsoft Corporation
//
#pragma once
// Class representing each individual annotation
class __declspec(uuid("87304f6a-0602-4b92-9efb-ed9da88f147c"))
AnnotationProvider : public IRawElementProviderSimple,
public IRawElementProviderFragment,
public IAnnotationProvider
{
public:
AnnotationProvider(_In_ HWND hwnd, _In_ AnnotatedTextControl *control, _In_ int annotationId);
virtual ~AnnotationProvider();
// IUnknown methods
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
HRESULT STDMETHODCALLTYPE QueryInterface(_In_ REFIID riid, _Outptr_ void**ppInterface);
// IRawElementProviderSimple methods
HRESULT STDMETHODCALLTYPE get_ProviderOptions(_Out_ ProviderOptions * retVal);
HRESULT STDMETHODCALLTYPE GetPatternProvider(PATTERNID iid, _Outptr_result_maybenull_ IUnknown * * retVal );
HRESULT STDMETHODCALLTYPE GetPropertyValue(PROPERTYID idProp, _Out_ VARIANT * retVal );
HRESULT STDMETHODCALLTYPE get_HostRawElementProvider(_Outptr_result_maybenull_ IRawElementProviderSimple ** retVal );
// IRawElementProviderFragment methods
HRESULT STDMETHODCALLTYPE Navigate(NavigateDirection direction, _Outptr_result_maybenull_ IRawElementProviderFragment ** retVal );
HRESULT STDMETHODCALLTYPE GetRuntimeId(_Outptr_result_maybenull_ SAFEARRAY ** retVal );
HRESULT STDMETHODCALLTYPE get_BoundingRectangle(_Out_ UiaRect * retVal );
HRESULT STDMETHODCALLTYPE GetEmbeddedFragmentRoots(_Outptr_result_maybenull_ SAFEARRAY ** retVal );
HRESULT STDMETHODCALLTYPE SetFocus();
HRESULT STDMETHODCALLTYPE get_FragmentRoot(_Outptr_result_maybenull_ IRawElementProviderFragmentRoot * * retVal);
// IAnnotationProvider methods
HRESULT STDMETHODCALLTYPE get_AnnotationTypeId(_Out_ int *retVal);
HRESULT STDMETHODCALLTYPE get_AnnotationTypeName(_Outptr_result_maybenull_ BSTR *retVal);
HRESULT STDMETHODCALLTYPE get_Author(_Outptr_result_maybenull_ BSTR *retVal);
HRESULT STDMETHODCALLTYPE get_DateTime(_Outptr_result_maybenull_ BSTR *retVal);
HRESULT STDMETHODCALLTYPE get_Target(_Outptr_result_maybenull_ IRawElementProviderSimple **retVal);
// Used internally for RangeFromAnnotation
int GetAnnotationId();
HWND GetControlHwnd();
private:
bool CheckAnnotation();
// Ref Counter for this COM object
ULONG _refCount;
// Internal Implementation Stuff;
HWND _hwnd; // The HWND for this object
AnnotatedTextControl *_control;
int _annotationId;
Annotation *_annotation;
};