我目前正在处理一个多表单应用程序并且在注册 del 键时遇到问题,需要 del 键的应用程序是一个带有框架的表单,上面绘制了可以在按下时选择的对象通过 deleteObjects 方法删除所选对象的 del 键。我目前使用的代码如下
void __fastcall TF_Image::KeyUpKbd( WORD &Key )
{
if(Key == VK_DELETE || Key == VK_DKEY)
{
deleteSelectedObjects();
}
}
(注意:函数调用中还有其他参数,但没有用到)
TF_Image 继承自 TFrame
我已经尝试映射除 del 键以外的其他键,即 D 键,并且发现调用该方法没有问题。我发现当(物理地)按下 del 键时,不会调用与 KeyUp 和 KeyDown 关联的方法。
编辑:所以我尝试将 DeleteSelectedOb() 方法添加到我的 WndProc 方法中,但运气不佳。
void __fastcall TF_ImgBrowserOA::WndProc(TMessage &Message)
{
if (Message.Msg == WM_KEYDOWN)
{
if (Message.WParam == VK_DELETE)
{
F_Image->DeleteSelectedOb();
}
}
//code that manages window resize
TForm::WndProc(Message);
}
WndProc 方法似乎不响应击键
最佳答案
因此在清理了一些其他模块中的一些代码并删除了不必要的菜单之后,我发现了一段实现了类似功能的类似代码,我看不出它们之间有太大区别,因此我决定回头再看一遍这一部分所以我重新编译并尝试从 KeyDown 事件运行我的 Delete 函数,由于某种原因它只是工作,我怀疑它归结为另一个元素在应用程序中保持焦点的问题。作为预防措施,我还调用了一个 SetFocus() 到我需要此代码在其中运行的框架。我仍然是一个谜,但为什么它最初不起作用。
关于c++ - 删除键不触发 KeyUp 和 KeyDown 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21425563/