IAccessible::get_accFocus 方法 (oleacc.h)
IAccessible::get_accFocus 方法會擷取具有鍵盤焦點的物件。 所有可能接收鍵盤焦點的對象都必須支援這個屬性。
語法
HRESULT get_accFocus(
[out, retval] VARIANT *pvarChild
);
參數
[out, retval] pvarChild
類型: VARIANT*
VARIANT 結構的位址,該結構會接收具有焦點之對象的相關信息。 下表描述 pvarID 中傳回的資訊。
值 | 意義 |
---|---|
|
無。 這個物件及其任何子系都沒有鍵盤焦點。 |
|
lVal CHILDID_SELF。 物件本身具有鍵盤焦點。 |
|
lVal 包含具有鍵盤焦點之子專案的子標識碼。 |
|
pdispVal 成員是具有鍵盤焦點之子物件的 IDispatch 介面 位址。 |
傳回值
類型: HRESULT
如果成功,則傳回 S_OK。
如果未成功,則會傳回下表中的其中一個值,或另一個標準 COM 錯誤碼。 伺服器會傳回這些值,但客戶端必須一律檢查輸出參數,以確保它們包含有效的值。 如需詳細資訊,請參閱 檢查 IAccessible 傳回值。
錯誤 | Description |
---|---|
|
對像是視窗,但不是前景視窗。 |
|
物件不支援這個屬性。 |
備註
鍵盤焦點的概念與使用中視窗的概念相關。 使用中視窗是用戶運作的前景視窗。 具有鍵盤焦點的物件是使用中視窗或使用中視窗的子物件。
容器內只有一個物件或項目隨時都有焦點。 具有鍵盤焦點的物件不一定是選取的物件。 如需選取範圍和焦點之間差異的詳細資訊,請參閱 選取範圍和焦點屬性和方法。
這個方法會傳回 pvarID 的 IDispatch 介面指標或子標識碼。 如需如何使用 IDispatch 介面指標或子標識碼的詳細資訊,請參閱 如何在參數中使用子標識符。
如同其他 IAccessible 方法和函式,用戶端可能會因為用戶動作而收到 IAccessible 介面指標的錯誤。 如需詳細資訊,請參閱 接收 IAccessible 介面指標的錯誤。
伺服器範例
下列範例程式代碼示範自定義單一選取清單框的這個方法可能實作。 如果控件沒有焦點,VT_EMPTY會由 HWND 的標準可存取物件在 variant 中傳回。 如果控件有焦點,而且已選取專案,則會傳回該專案的子標識符;如果沒有選取範圍,則會傳回CHILDID_SELF。
// m_pControl is the control object that is served by this implementation.
// m_pStdAccessibleObject is the object returned by CreateStdAccessibleObject.
HRESULT STDMETHODCALLTYPE AccServer::get_accFocus(VARIANT *pvarChild)
{
FAIL_IF_NO_CONTROL; // Macro that checks for existence of control.
HRESULT hr = m_pStdAccessibleObject->get_accFocus(pvarChild);
if (pvarChild->vt != VT_I4)
{
return hr;
}
else
{
int index = m_pControl->GetSelectedIndex();
if (index <0)
{
pvarChild->lVal = CHILDID_SELF;
}
else
{
// Convert to 1-based index for child ID.
pvarChild->lVal = index + 1;
}
}
return S_OK;
};
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | oleacc.h |
程式庫 | Oleacc.lib |
Dll | Oleacc.dll |
可轉散發套件 | sp6 和更新版本和 Windows 95 Windows NT 4.0 上的 Active Accessibility 1.3 RDK |