IAccessible::accDoDefaultAction 方法 (oleacc.h)
IAccessible::accDoDefaultAction 方法执行指定对象的默认操作。 并非所有对象都有默认操作。
语法
HRESULT accDoDefaultAction(
[in] VARIANT varChild
);
parameters
[in] varChild
类型: VARIANT
指定默认操作是属于 对象还是对象的子元素之一。 有关初始化 VARIANT 的详细信息,请参阅 如何在参数中使用子 ID。
返回值
类型: 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 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | oleacc.h |
Library | Oleacc.lib |
DLL | Oleacc.dll |
可再发行组件 | Windows NT Server 4.0 SP6 及更高版本和 Windows 95 上的 Active Accessibility 1.3 RDK |
请参阅
IAccessible::get_accDefaultAction