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

指定伺服器傳回的位置是否應該是 物件或其中一個物件子專案的位置。 此參數CHILDID_SELF (取得物件) 的相關資訊或子識別碼 (,以取得物件子項目的相關資訊) 。 如需初始化 VARIANT 結構的詳細資訊,請參閱 如何在參數中使用子識別碼。

傳回值

類型: HRESULT

如果成功,則傳回 S_OK。 用戶端必須一律檢查輸出參數是否包含有效的值。

如果未成功,則會傳回下表中的其中一個值,或另一個標準 COM 錯誤碼。 如需詳細資訊,請參閱 檢查 IAccessible 傳回值

錯誤 描述
DISP_E_MEMBERNOTFOUND
物件不支援這個方法。
E_INVALIDARG
引數無效。

備註

這個方法會擷取物件的周框。 如果物件具有非矩形圖形,這個方法會傳回完全包含整個物件區域的最小矩形。 若為非矩形物件,若使用 IAccessible::accHitTest 進行測試,物件的周框矩形座標可能會失敗。 這類非矩形物件的範例是大型圖示模式中的清單檢視專案,其中單一專案具有圖示的矩形,以及圖示文字的另一個矩形。 因為 accLocation 會傳回周框,所以該矩形中的所有點都不會在物件的實際界限內。 周框內的某些點可能不在 物件上。 如需詳細資訊,請參閱 流覽點擊測試與螢幕位置

注意: 這個方法會傳回寬度和高度。 如果您想要右和下座標,請使用向右 = 左 + 寬度來計算它們,而下 = 上 + 高度。

伺服器範例

下列範例顯示自訂清單方塊方法的可能實作,其清單專案為子專案。 對於清單方塊本身,呼叫會傳遞至標準可存取物件,這會傳回視窗的螢幕座標。

// 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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 oleacc.h
程式庫 Oleacc.lib
Dll Oleacc.dll
可轉散發套件 Windows NT 4.0 上的 Active Accessibility 1.3 RDK 與 SP6 和更新版本和 Windows 95

另請參閱

作用中協助工具和 Windows Vista 螢幕縮放

IAccessible

IAccessible::accHitTest

流覽點擊測試和螢幕位置

變異