gpt4 book ai didi

c - Microsoft 下拉列表组合框上的焦点指示器未显示(有时)

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:07 25 4
gpt4 key购买 nike

我有一个旧应用程序使用 Win32(不是 MFC)来创建图形屏幕。我们使用的一种控件类型是具有下拉列表样式的组合框(使用新的 Common Controls 模块)。我们最近发现了关于此控件的一个非常奇怪的事情。

如果我用鼠标单击启动应用程序,下拉列表上的焦点指示器不会显示!这可以使用“开始”->“运行”对话框来完成(填写要运行的程序后单击“确定”)。这可以使用桌面快捷方式(双击)来完成。这可以通过单击 Visual Studio 2010 中的 Go 按钮来调试程序来完成。我们的用户通过使用类似于“开始”->“运行”的小型 Delphi 应用程序发现了这一点(填写要执行的程序的输入字段,然后按下“启动”按钮)。如果单击“启动”按钮,焦点指示器将丢失。

如果我通过按键启动应用程序,则会显示焦点指示器!同样,开始 -> 运行对话框(但按 Enter 激活确定按钮)。桌面快捷方式(单击以突出显示图标,然后按 Enter 将其激活)。 F5 从 Visual Studio 中。即使是 Delphi 应用程序 - 如果您选择“启动”按钮,然后按空格键或 Enter,我们的应用程序就会启动并在下拉列表中显示焦点指示器。

我曾尝试创建一个只有下拉列表的小型 MFC 应用程序,并以上述所有方式启动了该应用程序。然而,这个小应用程序总是显示下拉列表的焦点指示器,无论我如何启动它。

我检查了两个下拉列表的样式(在我的小应用程序和我的实际应用程序中)。它们略有不同,但更改我的小型 MFC 应用程序的样式以匹配我的桌面应用程序不会改变行为。更改我的桌面应用程序以匹配小型 MFC 应用程序的样式也不会改变我的桌面应用程序的行为。

我修改了我的桌面应用程序,要求用户在显示主窗口之后但在显示任何图形控件之前按 Enter。这会导致焦点指示器现在显示!

我发现,在调试我的桌面应用程序时,如果我在显示主窗口之后但在绘制任何控件之前设置断点,然后按 F5 继续,现在会显示焦点指示器。但是,如果我改为单击“开始”按钮,则不会显示焦点指示器。

似乎与键盘交互以某种方式导致焦点指示器显示。

请注意,下拉列表组合框看起来像一个按钮,右侧有一个小的向下箭头。焦点指示器是按钮内边框附近的虚线。

我已经为这个问题苦苦挣扎了两天,没有迹象表明我离答案越来越近了。因此,我们将不胜感激对可能导致这种情况的原因的任何见解。

最佳答案

问题的第一条评论提供了部分答案。无论应用程序如何启动,更改键盘快捷键的控制面板设置也会导致显示焦点指示器。但是,我相信这只是部分答案。

当 CP 设置关闭时,键盘快捷键应该会在您按下 Alt 键后显示。根据 Jonathon Potter 链接到的博客文章,我的理解是,一旦使用键盘,焦点指示器就应该出现。在输入字段中输入文本可能不算作“使用键盘”,但我希望控件之间的制表符也算作“使用键盘”。

此外,如果 CP 设置关闭,我的应用程序的行为会有所不同,这取决于我是通过单击鼠标还是按键来启动应用程序。

总而言之,我发现行为不一致。也许这是正确的。我觉得很难说。

关于c - Microsoft 下拉列表组合框上的焦点指示器未显示(有时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27628713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com