【发布时间】:2012-09-26 15:24:48
【问题描述】:
我的应用程序有一个很大的图形区域,在侧面板中有一些控件(滑块、按钮、文本编辑控件)。图形区域可以理解一些键盘命令。
我的问题是,当侧面板中的控件处于焦点时,主图形区域不会收到任何键盘命令,所以这会让用户感到困惑。但是,对于某些控件,这是有意的,例如文本编辑控件。
我想要的是尽早自动返回图形区域的焦点(我称之为“贪婪”焦点) - 例如当文本编辑完成时(Enter 键),或者当用户从组合框中选择了一个项目时。
我正在寻找一种干净而强大的策略来处理该问题,无论是使用 Windows API 还是 Borland Vcl。
如果您想分享您的想法,我们将不胜感激。
【问题讨论】:
-
由于您希望图形区域成为处理键盘快捷键的区域,因此每当不应该这样做的区域获得焦点时,它应该将焦点更改为 gfx 区域。您是否尝试过在控件失去焦点(即,当它们收到 WM_KILLFOCUS 消息时)或当它们的封闭容器获得焦点时切换焦点?
-
是的,这是一个很有前途的方法,我已经开始走这条路了。然而,魔鬼在细节中。我的 WM_KILLFOCUS 处理程序适用于某些控件,但不适用于其他控件。例如,复选框变得不可点击。显然他们需要集中注意力来改变他们的状态。
标签: c++ winapi keyboard c++builder