我在MFC应用程序中遇到以下问题:
控件中的焦点矩形并不总是显示,即使控件具有焦点。
重现的步骤:
有两种"模式"一个显示焦点矩形,另一个显示焦点矩形。
其他事实:
有人遇到过这样的问题吗?我想知道这是否是一些"聪明的"微软功能。
答案 0 :(得分:4)
这是一个称为“键盘提示”(SPI_GETKEYBOARDPREF
和SPI_GETKEYBOARDCUES
)的Windows功能,而较新版本的Windows默认在基于对话框的窗口中隐藏它们(焦点矩形和带下划线的键盘访问键)。此功能为introduced in Windows 2000。
Windows对话框管理器初始化对话框based on the last input(鼠标或键盘):
窗口的默认状态是显示所有指标。但作为一个特殊技巧,对话框管理器将在初始化对话框后发送带有UIS_INITIALIZE的WM_UPDATEUISTATE消息,如果最后一个输入事件是鼠标事件,则会关闭指示符。
您可以使用MAKELONG(UIS_CLEAR, UISF_HIDEFOCUS)
向对话窗口发布WM_UPDATEUISTATE
消息,以显示焦点矩形(如果您希望覆盖Windows默认值)。