IAccessible::accDoDefaultAction 方法 (oleacc.h)
IAccessible::accDoDefaultAction方法會執行指定的物件預設動作。 並非所有的物件都有預設動作。
語法
HRESULT accDoDefaultAction(
[in] VARIANT varChild
);
參數
[in] varChild
類型: VARIANT
指定預設動作是否屬於 物件或其中一個物件的子專案。 如需初始化 VARIANT的詳細資訊,請參閱 如何在參數中使用子識別碼。
傳回值
類型: HRESULT
如果成功,則傳回 S_OK。
如果未成功,則會傳回下表中的其中一個值,或另一個標準 COM 錯誤碼。
錯誤 | 描述 |
---|---|
|
物件不支援 方法。 這個值會針對未執行動作的控制項傳回,例如編輯欄位。 |
|
引數無效。 |
備註
用戶端會藉由呼叫 IAccessible::get_accDefaultAction來擷取描述物件預設動作的字串。
請記下用戶端開發人員: 在標準系統功能表的功能表項目上使用 時,accDoDefaultAction 會傳回S_OK,但如果存取鍵中使用的字元 (功能表項目名稱文字中的加底線字元,也稱為助憶鍵) ?, !, @,或是需要 SHIFT 鍵或其他修飾詞鍵的任何其他字元,則無法執行動作。 這也會發生在國際鍵盤上,其存取鍵字元需要按下 ALT GR 鍵。 這不是其他應用程式中功能表的問題,例如 Microsoft Office 或 Windows Internet Explorer。 如需存取金鑰的詳細資訊,請參閱 IAccessible::get_accKeyboardShortcut。
此外,雖然 accDoDefaultAction 應該立即傳回,但某些實作會封鎖傳回。 例如,如果按一下連結會顯示對話方塊,某些實作將會封鎖傳回,直到對話方塊關閉為止。 這類延遲可防止用戶端應用程式處理對話方塊。 伺服器應該避免封鎖傳回的實作。
伺服器範例
下列範例顯示自訂清單控制項的可能實作,其預設動作是按兩下子專案。 為避免封鎖,方法會張貼自訂訊息,當控制項視窗收到時,會觸發動作,例如顯示專案屬性。
// Assume a previous definition such as this:
// #define CUSTOMLB_DEFERDOUBLECLICK (WM_USER + 1)
HRESULT STDMETHODCALLTYPE AccServer::accDoDefaultAction(
VARIANT varChild)
{
if (varChild.vt != VT_I4)
{
return E_INVALIDARG;
}
if (varChild.lVal != CHILDID_SELF)
{
// It is assumed that the control does its own checking to see which
// item has the focus when it receives this message.
PostMessage(m_hwnd, CUSTOMLB_DEFERDOUBLECLICK, 0, 0);
}
return S_OK;
};
用戶端範例
下列範例函式會在 控制項上執行預設動作。
HRESULT DoAction(IAccessible* pAcc)
{
VARIANT varId;
varId.vt = VT_I4;
varId.lVal = CHILDID_SELF;
return pAcc->accDoDefaultAction(varId);
}
需求
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | oleacc.h |
程式庫 | Oleacc.lib |
Dll | Oleacc.dll |
可轉散發套件 | Windows NT Server 4.0 上的 Active Accessibility 1.3 RDK 與 SP6 和更新版本和 Windows 95 |
另請參閱
IAccessible::get_accDefaultAction