c++ - 删除键不触发 KeyUp 和 KeyDown 事件

标签 c++ c++builder

我目前正在处理一个多表单应用程序并且在注册 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/

相关文章:

c++ - CMakeLists.txt :30 (project): No CMAKE_C_COMPILER could be found 处的 CMake 错误

c++ - windows系统如何控制声音?

c++ - 我必须创建一个对象才能在 C++ 中使用类方法吗?

c++ - 为什么我不能将 LDBL_EPSILON 添加到 1

c++ - 在 C++ 生成器中向 StringGrid 添加控件

android - 我可以在 Embarcadero C++Builder 中为 Android (*.so) 构建共享库吗?

c++ - 为什么winsock没有64位API?

C++ strtok函数拆分单词

c++ - 使用 boost::serialization 序列化 TAO/CORBA 对象

c++ - 在 C++ Builder 中使用 Ole 试用 Microsoft Word : how to put Word in the foreground