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