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,则不会处理键事件,并且应将事件转发到应用程序。

返回值

此方法可以返回其中一个值。

说明
S_OK
方法成功。
S_FALSE
未安装密钥事件接收器。
E_INVALIDARG
一个或多个参数无效。

注解

应用程序可以使用此方法确定是否由击键管理器处理键事件。 如果此方法成功且 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

另请参阅