&符号加速器会在Win32对话框中发出蜂鸣声

时间:2010-06-20 19:09:20

标签: c++ mfc winapi dialog

我在一个普通的Win32对话框上有一个动态创建的工具栏。我的按钮添加了&快捷方式正确地将下划线放在&符号后面的字符上,但按Alt +(char)会导致发出蜂鸣声并且不会单击该按钮。

自从我完成Win32 API开发以来已经有一段时间了。是否需要对动态创建的子窗口(工具栏)执行某些操作才能使加速键生效?

这可能是我很遗憾的事情......

2 个答案:

答案 0 :(得分:1)

蜂鸣声表示该应用中的任何窗口均未处理该命令。

由于您动态创建了工具栏,我猜测工具栏窗口没有正确设置为主窗口的子窗口(即,它的父窗口和所有者窗口未设置)。

要测试:单击工具栏以使其具有焦点,然后按Alt-它应该可以工作。

答案 1 :(得分:1)

嗯......您必须编写代码来处理这些按键并将其转换为WM_COMMAND消息。执行此操作的传统方法是定义加速器表并使用TranslateAccelerator()处理它们 - 当然,您可以自由地执行它但是您喜欢...只需确保您使用键处理的键即可你强调了!

您可能还会发现此知识库文章有用:How to use accelerator keys within a modal dialog box in Visual C++ ...或者,为了更深入(并且不含MFC),请查看在对话框中实现自定义消息处理,请查看Raymond Chen关于对话管理器,特别是part 4: The dialog looppart 9: Custom accelerators in dialog boxes(但严肃地说,读完整件事,你知道你想......)