首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测Embarcadero C++Builder中的C++Builder密钥组合

如何检测Embarcadero C++Builder中的C++Builder密钥组合
EN

Stack Overflow用户
提问于 2020-11-09 04:55:10
回答 1查看 487关注 0票数 1

我使用的是C++Builder 10.4.1。我想使用Ctrl+P组合来打开PrintDialog,但是我不知道如何检测Ctrl+P键组合。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-09 08:32:07

使用OnKeyDown事件,它返回16位扩展密钥代码(所以您还得到了num箭头和其他东西).

代码语言:javascript
复制
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
    {
//  Caption=Key; // this will print aktually pressed key code to caption
    if ((Key=='P')&&(Shift.Contains(ssCtrl)))
        Caption="print"; // here open your dialog
    }

因此,对于键测试Key值,对于特殊键和按钮测试Shift (您知道shift、ctrl、alt、鼠标按钮)。

此外,还有:

代码语言:javascript
复制
void __fastcall TForm1::FormShortCut(TWMKey &Msg, bool &Handled)
    {
    static bool ctrl=false;
    if (Msg.CharCode=='P')
        {
        Caption="print2";
        Handled=true;
        }
    ctrl=(Msg.CharCode==VK_LCONTROL)||(Msg.CharCode==VK_RCONTROL);
    }

它具有比其他键/鼠标事件更重要的优先级。然而,它只能识别我不喜欢的TWMKey代码,对于不支持的密钥组合,您需要进行黑客攻击,就像我在上面的例子中所做的那样。

如果您想要更多的组合或跟踪哪些键被按下(运动控制.)然后,您必须实现一个键映射表,如下所示:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64746068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档