iTfKeystrokeMgr::TestKeyDown 方法 (msctf.h)
确定击键管理器是否会处理键关闭事件。
语法
HRESULT TestKeyDown(
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten
);
parameters
[in] wParam
指定密钥的虚拟密钥代码。 有关此参数的详细信息,请参阅 WM_KEYDOWN 中的 wParam 参数。
[in] lParam
指定键的重复计数、扫描代码、扩展键标志、上下文代码、以前的键状态标志和转换状态标志。 有关此参数的详细信息,请参阅 WM_KEYDOWN 中的 lParam 参数。
[out] pfEaten
指向 BOOL 的指针,该 BOOL 指示是否将处理密钥事件。 如果此值收到 TRUE,则将处理密钥事件,并且不应将事件转发到应用程序。 如果此值为 FALSE,则不会处理键事件,并且应将事件转发到应用程序。
返回值
此方法可以返回其中一个值。
值 | 说明 |
---|---|
|
方法成功。 |
|
未安装密钥事件接收器。 |
|
一个或多个参数无效。 |
注解
应用程序可以使用此方法确定是否由击键管理器处理键事件。 如果此方法成功且 pfEaten 收到 TRUE,则应用程序应调用 ITfKeystrokeMgr::KeyDown。 如果此方法未返回S_OK或 pfEaten 接收 FALSE,则应用程序不应调用 ITfKeystrokeMgr::KeyDown 。 下面是如何实现此操作的示例。
if(msg.message == WM_KEYDOWN)
{
if( pKeyboardMgr->TestKeyDown(msg.wParam, msg.lParam, &fEaten) == S_OK
&& fEaten
&& pKeyboardMgr->KeyDown(msg.wParam, msg.lParam, &fEaten) == S_OK
&& fEaten)
{
//The key was handled by the keystroke manager or a TSF text service. Do not pass the key to the application.
continue;
}
else
{
//Let the application process the key.
}
}
如果击键管理器不处理密钥事件,它将通过调用文本服务 ITfKeyEventSink::OnTestKeyDown 方法将密钥事件传递给 TSF 文本服务。
要求
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | msctf.h |
DLL | Msctf.dll |
可再发行组件 | Windows 2000 专业版上的 TSF 1.0 |