我有一个继承自CListCtrl类的类,比如class list。 我有另一个类dlg,它继承自CDialog。
类dlg包含类列表的实例。
我在类dlg中有一个删除按钮,我在其中删除了listCtrl中的所选项目,并进行了大量其他处理。 我想在删除键上使用相同的功能。
我添加了OnKeyDown()fn是我的类列表,我可以在其中捕获VK_DELETE键。但我的问题是,如何在对话框类中进行我需要做的工作。 所有处理都是基于dlg类而不是基于列表类。 我有很多这样的dlg类,它们具有不同的数据,并且在每个dlg类中处理都是不同的。
我尝试在对话框类中捕获VK_DELETE,但如果焦点在列表类上,它就不会捕获它。
我完全陷入困境,不知道如何做到这一点。
请告诉我如何做到这一点。
谢谢, SG
答案 0 :(得分:1)
如何将List类中捕获的调用委托给父Dialog类。因此,您在List类上捕获VK_DELETE,并向父级说明您收到了Delete命令。因此,如果您愿意,可以将所有处理保留在父Dialog类上。
((CMyParentDialog*) GetParent())->OnDeleteKeyPressed(this);
或者更好的是,创建自定义消息并将其发布到父窗口。
#define W_DELETE_PRESSED_ON_LIST (WM_USER + 1)
GetParent()->PostMessage(WM_DELETE_PRESSED_ON_LIST);