微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DrawFocusRect函数:Windows 10中奇怪的2像素焦点矩形

如何解决DrawFocusRect函数:Windows 10中奇怪的2像素焦点矩形

我注意到当它在Windows 10中运行时,焦点矩形在我们的一个旧版应用程序中已更改。事实证明,在其他老式Microsoft应用程序中,我们也能看到相同的效果-例如,在HTML帮助中作坊。焦点矩形必须是由交替的黑白点组成的虚线矩形,但是我们看到一个2像素矩形与所选内容混合在一起,看起来像是红橙色矩形:

enter image description here

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

焦点矩形是使用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

解决方法

谢谢所有评论我的问题的人。情况变得很清楚,但问题的所有部分都没有。我正在通过这种答案来恢复我们目前所知道的一切。

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

'Make the focus rectangle thicker' option in Windows 10 Control Panel

我不明白的第一件事是为什么选中了此选项。西蒙·穆里尔(Simon Mourier)认为这是先前Windows安装的遗留物,但我怀疑这是真的。我绝对知道,至少在我的开发个人电脑上,没有人检查过这个,因为只有我才能做到。看来Windows会决定根据某些系统参数自行检查此选项。

第二个不可理解的地方就是为什么聚焦矩形变成深橘红色。但这也许是设计使然。也许,Microsoft中的某个人认为此颜色是焦点矩形的最佳选择。

我认为,考虑到所有这些,对于我和其他需要在应用程序中使用焦点矩形的开发人员而言,最佳选择是使用SPI_GETFOCUSBORORHEIGHT和SPI_GETFOCUSBORDERWIDTH系统参数值定义的厚度自己绘制焦点矩形。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。