Win32 - 有没有办法获得滚动条周围的边距或边框大小?
Win32 - Is there a way to get the margin or border size around a scrollbar?
如何获取客户区(比如记事本)中显示的内容和滚动条之间的区域。那里有一个轻微的差距/边界。这是如何确定的?
TIA!!
这是一个示例:请注意小“j”的一部分显示,但它与右侧的滚动条之间有一个边框。你怎么知道这个差距,因为客户 RECT 包括差距?
记事本对其文本区域使用标准的 EDIT 控件。 EDIT 控件实现了两个消息:EM_GETMARGINS
和EM_GETRECT
。由 EM_GETMARGINS
和 EM_GETRECT
编辑的值 return 取决于所选字体。
对于 96 DPI 的 Courier New:
height client rect EM_GETMARGINS EM_GETRECT right margin
left right left right left right by EM_GETRECT
10pt 0 489 2 1 3 487 2
20pt 0 489 5 3 6 485 4
对于 96 DPI 的 Lucida 控制台:
height client rect EM_GETMARGINS EM_GETRECT right margin
left right left right left right by EM_GETRECT
10pt 0 489 0 0 1 488 1
20pt 0 489 0 1 1 487 2
对于 96 DPI 的 Consolas:
height client rect EM_GETMARGINS EM_GETRECT right margin
left right left right left right by EM_GETRECT
10pt 0 489 3 3 5 485 4
20pt 0 489 7 6 8 482 7
出于某种原因 EM_GETMARGINS
和 EM_GETRECT
return 边距略有不同。目视检查它们似乎 EM_GETRECT
产生更正确的结果。
这些是默认值。记事本可以修改它们,但是 Windows 10 个值如上所述。请注意,在 Windows 10 上,一个白色像素属于垂直滚动条(可以通过将鼠标悬停在它上面来验证, 导致滚动条的拇指突出显示并将光标从 i-beam 更改为箭头) .
看起来您正在使用 Consolas 并获得默认边距。
如何获取客户区(比如记事本)中显示的内容和滚动条之间的区域。那里有一个轻微的差距/边界。这是如何确定的?
TIA!!
这是一个示例:请注意小“j”的一部分显示,但它与右侧的滚动条之间有一个边框。你怎么知道这个差距,因为客户 RECT 包括差距?
记事本对其文本区域使用标准的 EDIT 控件。 EDIT 控件实现了两个消息:EM_GETMARGINS
和EM_GETRECT
。由 EM_GETMARGINS
和 EM_GETRECT
编辑的值 return 取决于所选字体。
对于 96 DPI 的 Courier New:
height client rect EM_GETMARGINS EM_GETRECT right margin
left right left right left right by EM_GETRECT
10pt 0 489 2 1 3 487 2
20pt 0 489 5 3 6 485 4
对于 96 DPI 的 Lucida 控制台:
height client rect EM_GETMARGINS EM_GETRECT right margin
left right left right left right by EM_GETRECT
10pt 0 489 0 0 1 488 1
20pt 0 489 0 1 1 487 2
对于 96 DPI 的 Consolas:
height client rect EM_GETMARGINS EM_GETRECT right margin
left right left right left right by EM_GETRECT
10pt 0 489 3 3 5 485 4
20pt 0 489 7 6 8 482 7
出于某种原因 EM_GETMARGINS
和 EM_GETRECT
return 边距略有不同。目视检查它们似乎 EM_GETRECT
产生更正确的结果。
这些是默认值。记事本可以修改它们,但是 Windows 10 个值如上所述。请注意,在 Windows 10 上,一个白色像素属于垂直滚动条(可以通过将鼠标悬停在它上面来验证, 导致滚动条的拇指突出显示并将光标从 i-beam 更改为箭头) .
看起来您正在使用 Consolas 并获得默认边距。