Win32 API 日本語リファレンス
ホームUI.Accessibility › IRangeValueProvider

IRangeValueProvider

COM
IID36dc7aef-33e6-4691-afe1-2be7274b3d33継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

範囲内の値に設定できるコントロールへのアクセスを提供します。

解説(Remarks)

RangeValue コントロールパターンをサポートする必要がある Microsoft UI Automation プロバイダーに実装されます。

メソッド 7

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT SetValue(DOUBLE val)

コントロールの値を設定します。(IRangeValueProvider.SetValue)

valDOUBLEin設定する値。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

実際に設定される値はコントロールの実装に依存します。コントロールは要求された値を切り上げまたは切り下げる場合があります。

vtbl 4 HRESULT get_Value(DOUBLE* pRetVal)

コントロールの値を指定します。

pRetValDOUBLE*out現在の値を受け取る出力ポインタである。
vtbl 5 HRESULT get_IsReadOnly(BOOL* pRetVal)

コントロールの値が読み取り専用かどうかを示します。(IRangeValueProvider.get_IsReadOnly)

pRetValBOOL*out値が読み取り専用かどうかを受け取る出力ポインタである。
vtbl 6 HRESULT get_Maximum(DOUBLE* pRetVal)

コントロールがサポートする範囲の最大値を指定します。

pRetValDOUBLE*out設定可能な最大値を受け取る出力ポインタである。

解説(Remarks)

この値は Minimum より大きくする必要があります。

vtbl 7 HRESULT get_Minimum(DOUBLE* pRetVal)

コントロールがサポートする範囲の最小値を指定します。

pRetValDOUBLE*out設定可能な最小値を受け取る出力ポインタである。

解説(Remarks)

この値は Maximum より小さくする必要があります。

vtbl 8 HRESULT get_LargeChange(DOUBLE* pRetVal)

PAGE DOWN キーが押されたときなど、大きな変更が行われる際に IRangeValueProvider::Value プロパティに加算または減算される値を指定します。

pRetValDOUBLE*out大きな増減操作で変化する値の量を受け取る出力ポインタである。

解説(Remarks)

LargeChange プロパティは Not a Number (NaN) 値をサポートできます。NaN 値を返す場合、浮動小数点例外が有効になっているときに例外が発生するのを避けるため、プロバイダーはクワイエット(非シグナル)NaN を返す必要があります。次の例は、クワイエット NaN を作成する方法を示しています。

ULONGLONG ulNaN = 0xFFFFFFFFFFFFFFFF;
    *pRetVal = *reinterpret_cast<double*>(&ulNaN);

あるいは、標準 C++ ライブラリの次の関数を使用することもできます。

numeric_limits<double>::quiet_NaN( )
vtbl 9 HRESULT get_SmallChange(DOUBLE* pRetVal)

矢印キーが押されたときなど、小さな変更が行われる際に IRangeValueProvider::Value プロパティに加算または減算される値を指定します。

pRetValDOUBLE*out小さな増減操作で変化する値の量を受け取る出力ポインタである。

解説(Remarks)

SmallChange プロパティは Not a Number (NaN) 値をサポートできます。NaN 値を返す場合、浮動小数点例外が有効になっているときに例外が発生するのを避けるため、プロバイダーはクワイエット(非シグナル)NaN を返す必要があります。次の例は、クワイエット NaN を作成する方法を示しています。

ULONGLONG ulNaN = 0xFFFFFFFFFFFFFFFF;
    *pRetVal = *reinterpret_cast<double*>(&ulNaN);

あるいは、標準 C++ ライブラリの次の関数を使用することもできます。

numeric_limits<double>::quiet_NaN()
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IRangeValueProvider "{36DC7AEF-33E6-4691-AFE1-2BE7274B3D33}"
#usecom global IRangeValueProvider IID_IRangeValueProvider "{}"
#comfunc global IRangeValueProvider_SetValue         3 double
#comfunc global IRangeValueProvider_get_Value        4 var
#comfunc global IRangeValueProvider_get_IsReadOnly   5 var
#comfunc global IRangeValueProvider_get_Maximum      6 var
#comfunc global IRangeValueProvider_get_Minimum      7 var
#comfunc global IRangeValueProvider_get_LargeChange  8 var
#comfunc global IRangeValueProvider_get_SmallChange  9 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。