mirror of
https://github.com/netease-im/NIM_Duilib_Framework.git
synced 2026-10-29 14:50:04 +08:00
167 lines
3.1 KiB
C++
167 lines
3.1 KiB
C++
#include "StdAfx.h"
|
|
|
|
#if defined(ENABLE_UIAUTOMATION)
|
|
|
|
namespace ui
|
|
{
|
|
|
|
|
|
|
|
UIAScrollBarProvider::UIAScrollBarProvider(Control* pControl)
|
|
:UIAControlProvider(pControl)
|
|
{
|
|
}
|
|
|
|
UIAScrollBarProvider::~UIAScrollBarProvider()
|
|
{
|
|
}
|
|
|
|
// IUnknown implementation.
|
|
//
|
|
IFACEMETHODIMP UIAScrollBarProvider::QueryInterface(REFIID riid, void** ppInterface)
|
|
{
|
|
*ppInterface = nullptr;
|
|
|
|
if (riid == __uuidof(IRangeValueProvider))
|
|
*ppInterface = static_cast<IRangeValueProvider*>(this);
|
|
else
|
|
return __super::QueryInterface(riid, ppInterface);
|
|
|
|
AddRef();
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
// Implementation of IRawElementProviderSimple::GetPatternProvider.
|
|
// Gets the object that supports the specified pattern.
|
|
//
|
|
IFACEMETHODIMP UIAScrollBarProvider::GetPatternProvider(PATTERNID patternId, IUnknown** pRetVal)
|
|
{
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
*pRetVal = nullptr;
|
|
|
|
if (patternId == UIA_RangeValuePatternId)
|
|
*pRetVal = static_cast<IRawElementProviderSimple*>(this);
|
|
else
|
|
return __super::GetPatternProvider(patternId, pRetVal);
|
|
|
|
AddRef();
|
|
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP UIAScrollBarProvider::GetPropertyValue(PROPERTYID propertyId, VARIANT* pRetVal)
|
|
{
|
|
pRetVal->vt = VT_EMPTY;
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
switch (propertyId)
|
|
{
|
|
case UIA_ControlTypePropertyId:
|
|
pRetVal->vt = VT_I4;
|
|
pRetVal->lVal = UIA_ScrollBarControlTypeId;
|
|
break;
|
|
default:
|
|
return __super::GetPropertyValue(propertyId, pRetVal);
|
|
break;
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP UIAScrollBarProvider::SetValue(double val)
|
|
{
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
auto pScrollBar = dynamic_cast<ScrollBar*>(m_pControl);
|
|
if (!pScrollBar)
|
|
return E_INVALIDARG;
|
|
|
|
pScrollBar->SetScrollPos(val);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP UIAScrollBarProvider::get_Value(double* pRetVal)
|
|
{
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
auto pScrollBar = dynamic_cast<ScrollBar*>(m_pControl);
|
|
if (!pScrollBar)
|
|
return E_INVALIDARG;
|
|
|
|
*pRetVal = pScrollBar->GetScrollPos();
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP UIAScrollBarProvider::get_IsReadOnly(BOOL* pRetVal)
|
|
{
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
auto pScrollBar = dynamic_cast<ScrollBar*>(m_pControl);
|
|
if (!pScrollBar)
|
|
return E_INVALIDARG;
|
|
|
|
*pRetVal = !pScrollBar->IsEnabled();
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP UIAScrollBarProvider::get_Maximum(double* pRetVal)
|
|
{
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
auto pScrollBar = dynamic_cast<ScrollBar*>(m_pControl);
|
|
if (!pScrollBar)
|
|
return E_INVALIDARG;
|
|
|
|
*pRetVal = static_cast<double>(pScrollBar->GetScrollRange());
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP UIAScrollBarProvider::get_Minimum(double* pRetVal)
|
|
{
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
auto pScrollBar = dynamic_cast<ScrollBar*>(m_pControl);
|
|
if (!pScrollBar)
|
|
return E_INVALIDARG;
|
|
|
|
*pRetVal = 0.0f;
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP UIAScrollBarProvider::get_LargeChange(double* pRetVal)
|
|
{
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
auto pScrollBar = dynamic_cast<ScrollBar*>(m_pControl);
|
|
if (!pScrollBar)
|
|
return E_INVALIDARG;
|
|
|
|
*pRetVal = 0.0f;
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP UIAScrollBarProvider::get_SmallChange(double* pRetVal)
|
|
{
|
|
UIA_CHECK_ELEMENT(m_pControl);
|
|
|
|
auto pScrollBar = dynamic_cast<ScrollBar*>(m_pControl);
|
|
if (!pScrollBar)
|
|
return E_INVALIDARG;
|
|
|
|
*pRetVal = 0.0f;
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
}
|
|
|
|
#endif |