Share via


IAccessible::accDoDefaultAction 方法 (oleacc.h)

IAccessible::accDoDefaultAction方法會執行指定的物件預設動作。 並非所有的物件都有預設動作。

語法

HRESULT accDoDefaultAction(
  [in] VARIANT varChild
);

參數

[in] varChild

類型: VARIANT

指定預設動作是否屬於 物件或其中一個物件的子專案。 如需初始化 VARIANT的詳細資訊,請參閱 如何在參數中使用子識別碼

傳回值

類型: HRESULT

如果成功,則傳回 S_OK。

如果未成功,則會傳回下表中的其中一個值,或另一個標準 COM 錯誤碼

錯誤 描述
DISP_E_MEMBERNOTFOUND
物件不支援 方法。 這個值會針對未執行動作的控制項傳回,例如編輯欄位。
E_INVALIDARG
引數無效。

備註

用戶端會藉由呼叫 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

另請參閱

附錄 A:支援的使用者介面元素參考

DefaultAction 屬性

IAccessible

IAccessible::get_accDefaultAction

IAccessible::get_accKeyboardShortcut

變異