IAccessible::accLocation メソッド (oleacc.h)

IAccessible::accLocation メソッドは、指定したオブジェクトの現在の画面位置を取得します。 すべてのビジュアル オブジェクトでこのメソッドがサポートされている必要があります。 サウンド オブジェクトでは、このメソッドはサポートされていません。

構文

HRESULT accLocation(
  [out] long    *pxLeft,
  [out] long    *pyTop,
  [out] long    *pcxWidth,
  [out] long    *pcyHeight,
  [in]  VARIANT varChild
);

パラメーター

[out] pxLeft

型: long*

オブジェクトの位置の左上の境界の x 座標を受け取る変数の物理画面座標のアドレス。

[out] pyTop

型: long*

オブジェクトの位置の左上の境界の y 座標を受け取る変数の物理画面座標のアドレス。

[out] pcxWidth

型: long*

オブジェクトの幅を受け取る変数のアドレス (ピクセル単位)。

[out] pcyHeight

型: long*

オブジェクトの高さを受け取る変数のアドレス (ピクセル単位)。

[in] varChild

型: VARIANT

サーバーから返される場所を、オブジェクトの場所とオブジェクトの子要素の 1 つのいずれにするかを指定します。 このパラメーターは、CHILDID_SELF (オブジェクトに関する情報を取得するため) または子 ID (オブジェクトの子要素に関する情報を取得する場合) のいずれかです。 VARIANT 構造体の初期化の詳細については、「パラメーターでの子 ID の使用方法」を参照してください。

戻り値

型: HRESULT

成功した場合は、S_OK を返します。 クライアントは常に、出力パラメーターに有効な値が含まれていることをチェックする必要があります。

成功しなかった場合は、次のテーブルの値の 1 つ、または別の標準 COM エラー コードを返します。 詳細については、「 IAccessible 戻り値の確認」を参照してください。

エラー 説明
DISP_E_MEMBERNOTFOUND
オブジェクトは、このメソッドをサポートしていません。
E_INVALIDARG
引数が有効ではありません。

解説

このメソッドは、オブジェクトの外接する四角形を取得します。 オブジェクトに四角形以外の図形がある場合、このメソッドは、オブジェクト領域全体を完全に包含する最小の四角形を返します。 四角形以外のオブジェクトの場合、 IAccessible::accHitTest でテストすると、オブジェクトの外接する四角形の座標が失敗する可能性があります。 このような四角形以外のオブジェクトの例としては、大きなアイコン モードのリスト ビューアイテムがあり、1 つの項目にアイコンの四角形とアイコンのテキスト用の別の四角形があります。 accLocation は外接する四角形を返すので、その四角形内のすべてのポイントがオブジェクトの実際の境界内にあるわけではありません。 外接する四角形内の一部のポイントが オブジェクト上にない場合があります。 詳細については、「 ヒット テストのナビゲーション」と「画面の場所」を参照してください。

メモ: このメソッドは、幅と高さを返します。 右と下の座標が必要な場合は、right = left + width、bottom = top + height を使用して計算します。

サーバーの例

次の例は、リスト 項目が子要素であるカスタム リスト ボックスの メソッドの実装の可能性を示しています。 リスト ボックス自体の場合、呼び出しは、ウィンドウの画面座標を返す標準のアクセス可能なオブジェクトに渡されます。

// m_pStdAccessibleObject is the standard accessible object for the control window. 
// m_pControl is the object that represents the control. Its GetItemRect method  
//   retrieves the screen coordinates of the specified item in a zero-based collection. 
// 
HRESULT STDMETHODCALLTYPE AccServer::accLocation( 
    long *pxLeft,
    long *pyTop,
    long *pcxWidth,
    long *pcyHeight,
    VARIANT varChild)
{
    *pxLeft = 0;
    *pyTop = 0;
    *pcxWidth = 0;
    *pcyHeight = 0;
    if (varChild.vt != VT_I4)
    {
        return E_INVALIDARG;
    }
    if (varChild.lVal == CHILDID_SELF)
    {
        return m_pStdAccessibleObject->accLocation(pxLeft, pyTop, pcxWidth, pcyHeight, varChild);
    }
    else
    {
        RECT rect;
        if (m_pControl->GetItemRect(varChild.lVal - 1, &rect) == FALSE)
        {
            return E_INVALIDARG;
        }
        else
        {
            *pxLeft = rect.left;
            *pyTop = rect.top;
            *pcxWidth = rect.right - rect.left;
            *pcyHeight = rect.bottom - rect.top;
            return S_OK;        
        }
    }
};

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー oleacc.h
Library Oleacc.lib
[DLL] Oleacc.dll
再頒布可能パッケージ WINDOWS NT 4.0 SP6 以降および Windows 95 でのアクティブなアクセシビリティ 1.3 RDK

関連項目

アクティブなアクセシビリティと Windows Vista 画面のスケーリング

Iaccessible

IAccessible::accHitTest

ヒット テストと画面の場所のナビゲーション

バリアント