Bmy*_*est 5 mfc multiline vertical-alignment
如何CStatic使用文本自动换行(多行)使结果垂直居中在控件的矩形中?
我试图解决的问题是:我在 aCStatic旁边有一个控件,CComboBox它根据选择更新信息文本。该文本可以短也可以长,要求CStatic有时使用多行,有时不使用。我希望信息文本与CComboBox.
现在问题来了:
如果我将CStatic唯一的 1 个文本行设为高,则它对于 1 行文本看起来不错,但多行不适合并且不会显示。
如果我使CStatic更高以适应 2 行,它看起来很适合长文本(2 行),但 1 行文本向上移动,因为CStatic对齐顶部的文本。一个CStatic在问题中提到的行为会解决这个...
如果我无法轻松获得垂直居中的CStatic多行控件,另一种方法是根据其中的文本量调整控件 rect 的大小。但在这种情况下,我有一个不同的问题:
如何以编程方式找出CStatic特定宽度的文本需要多少行?
不幸的是,您无法在CStatic.
你的下一个问题有一个解决方案,但使用起来有点痛苦。您要做的就是使用CDC::DrawTextEx该DT_CALCRECT标志来获取要格式化的文本的大小(以像素为单位)。通过将其除以一行文本的高度(在字体信息中给出,您可以从 中获取)DC,加上一些间距,我不确定它是多少 - 大概是一个固定的量,我不认为你可以使用DrawText) 指定行间距,您将获得您将获得的行数(近似值)。然后您可以调整控制矩形的大小。
想想看,您可能最好不要转换为线条,而只是将控件的大小调整到您获得的程度DrawTextEx:)
类似这样的事情通常需要一些实验才能完全正确,并且有时不同操作系统版本之间的行为有所不同。谨慎行事。
| 归档时间: |
|
| 查看次数: |
4305 次 |
| 最近记录: |