• 442阅读
  • 3回复

OnMessage事件中如何捕获键盘按键? [复制链接]

上一主题 下一主题
离线shigx
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2023-09-03
官方帮助文档中指出OnMessage事件中可以捕获“视频区域引发鼠标操作或者当 APlayer 视频区域拥有焦点时引发键盘操作”,但是只给出了鼠标示例。
我想捕获键盘按键,比如“空格键”,请问管理员老师或者其他各位大佬,该如何写代码呢?我试了一下,没有成功,恳请大家指教,谢谢!
离线aplayer

只看该作者 沙发  发表于: 2023-09-15
    switch(uMsg)
    {
    case WM_KEYDOWN:
        {
            switch(LOWORD(wParam))
            {
             case 'a':
             case 'A':    // A 键
                    break;
             case ' ' // 空格键
                    // 你的处理代码
                    break;
              }
        }
}

离线shigx

只看该作者 板凳  发表于: 2023-09-16
感谢管理员老师!这个问题已经解决了,原因是我踩了一个坑,这里贴出来供大家参考。

问题:当初我只能捕获到鼠标事件,但是键盘事件无论如何都捕获不到,根本就是不进入OnMessage事件中。我的开发语言是C#。

原因:我在axPayer1控件的左下角叠加了一个label控件,用于显示“正在打开...”、“暂停”、“缓冲中...”等信息,并且设置了label1.parent=axPlayer1。问题就在这个parent属性的上,我设置这个的目的是为了让label一直处于axPlayer控件的上层,避免被axPlayer1遮盖。但这样一来,axPlayer1永远获得不了焦点,哪怕axPlayr1.Focus()也不行,从而导致无法捕获键盘事件。
离线shigx

只看该作者 地板  发表于: 2023-09-16
感谢管理员老师!这个问题已经解决了,原因是我踩了一个坑,这里贴出来供大家参考。

问题:当初我只能捕获到鼠标事件,但是键盘事件无论如何都捕获不到,根本就是不进入OnMessage事件中。我的开发语言是C#。

原因:我在axPayer1控件的左下角叠加了一个label控件,用于显示“正在打开...”、“暂停”、“缓冲中...”等信息,并且设置了label1.parent=axPlayer1。问题就在这个parent属性的上,我设置这个的目的是为了让label一直处于axPlayer控件的上层,避免被axPlayer1遮盖。但这样一来,axPlayer1永远获得不了焦点,哪怕axPlayr1.Focus()也不行,从而导致无法捕获键盘事件。
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个