0

我注意到我们的一个旧应用程序在 Windows 10 中运行时,焦点矩形发生了变化。事实证明,我们在其他旧式 Microsoft 应用程序中看到了相同的效果 - 例如,在 HTML Help Workshop 中。焦点矩形必须是由交替的黑白点组成的虚线矩形,但我们看到一个 2 像素矩形与看起来像红橙色矩形的选择混合:

在此处输入图像描述

该问题仅出现在 2 台装有 Windows 10 版本 1909 的计算机上。其中一台是 Pro 版,另一台是 Home 版。

焦点矩形是在我们的应用程序中使用 WinAPI DrawFocusRect函数绘制的。该DrawFocusRect函数的文档说明如下:

Windows XP:焦点矩形现在可以厚于 1 个像素,因此对于高分辨率、高密度显示器和可访问性需求而言,它更加明显。

但这无助于理解为什么问题只发生在这 2 台计算机上。它们配备了普通的 96dpi 显示器,据我所知,它们没有打开辅助功能选项。

它可能是什么以及如何修复焦点矩形的绘制以查看传统的 1 像素黑白虚线矩形?


如果有帮助,这里是用于在我们的 VB6 应用程序中绘制焦点矩形的代码示例:

Dim hBrBlack As Long
hBrBlack = CreateSolidBrush(vbBlack)
FrameRect hMemDC, rcFocusRect, hBrBlack
DeleteObject hBrBlack

SetBkColor hMemDC, lColor1
SetTextColor hMemDC, lColor2
DrawFocusRect hMemDC, rcFocusRect
4

1 回答 1

0

感谢所有评论我的问题的人。情况变得明朗了,但不是所有的问题。我在这种答案中恢复了我们现在所知道的所有内容。

是的,确实,在 Windows 10 中,我们可以打开Control Panel> Ease of Access> Ease of Access Center>Make the computer easier to see并找到Make the focus rectangle thicker选项:

Windows 10 控制面板中的“使焦点矩形变粗”选项

我不明白的第一件事是为什么这个选项被选中。Simon Mourier 认为这是从以前的 Windows 安装遗留下来的,但我怀疑这是真的。我绝对知道,至少在我的开发电脑上没有人检查过这个,因为只有我才能做到这一点。似乎 Windows 在某些时候决定根据某些系统参数自行检查此选项。

第二个难以理解的点是为什么焦点矩形变成深橙红色。但也许,这是设计使然。也许,微软的某个人认为这种颜色是焦点矩形的最佳选择。

考虑到这一切,我认为,对于我和其他需要在我们的应用程序中使用焦点矩形的开发人员来说,最好的选择是使用 SPI_GETFOCUSBORDERHEIGHT 和 SPI_GETFOCUSBORDERWIDTH 系统参数值定义的厚度自己绘制焦点矩形。

于 2020-10-08T05:39:43.970 回答