我使用的是C++Builder 10.4.1。我想使用Ctrl+P组合来打开PrintDialog,但是我不知道如何检测Ctrl+P键组合。
发布于 2020-11-09 08:32:07
使用OnKeyDown事件,它返回16位扩展密钥代码(所以您还得到了num箭头和其他东西).
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、鼠标按钮)。
此外,还有:
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代码,对于不支持的密钥组合,您需要进行黑客攻击,就像我在上面的例子中所做的那样。
如果您想要更多的组合或跟踪哪些键被按下(运动控制.)然后,您必须实现一个键映射表,如下所示:
https://stackoverflow.com/questions/64746068
复制相似问题