gpt4 book ai didi

mfc - MFC中多行cstatic文本垂直居中

转载 作者:行者123 更新时间:2023-12-01 17:03:39 33 4
gpt4 key购买 nike

如何制作一个带有文本自动换行(多行)的 CStatic ,使结果在控件的矩形中垂直居中?

我试图解决的问题是这样的:我在 CComboBox 旁边有一个 CStatic 控件,它根据选择更新信息文本。该文本可短可长,要求 CStatic 有时使用多行,有时则不使用。我希望信息文本与 CComboBox 垂直居中对齐。

现在问题是:

  • 如果我将 CStatic 设置为仅 1 行文本高,则它对于 1 行文本看起来不错,但多行不适合并且不会显示。

    <
  • 如果我将 CStatic 调高以适合 2 行,那么它对于长文本(有 2 行)看起来不错,但 1 行文本会向上移动,因为 CStatic 将文本对齐到顶部。具有问题中提到的行为的 CStatic 可以解决这个问题...

如果我无法轻松获得垂直居中的 CStatic 多行控件,则替代方法是根据其中的文本量调整控件矩形的大小。但在这种情况下我有一个不同的问题:

如何以编程方式找出特定宽度的 CStatic 中文本需要多少行?

最佳答案

遗憾的是,您无法在 CStatic 中居中显示多行文本。

你的下一个问题有一个解决方案,但使用起来有点痛苦。您要做的就是使用 CDC::DrawTextEx 和 DT_CALCRECT 标志来获取要格式化的文本的大小(以像素为单位)。通过将其除以一行文本的高度(在您可以从 DC 获得的字体信息中给出)加上一些间距,我不确定它是多少 - 大概是一个固定的数量,我认为您不能使用 DrawText 指定行间距),您将获得(近似值)您将获得的行数。然后您可以调整控制矩形的大小。

想一想,您最好不要转换为线条,而只是将控件的大小调整到从 DrawTextEx 获得的范围:)

这样的事情通常需要一些实验才能完全正确,并且有时在操作系统版本之间的行为有所不同。谨慎行事。

关于mfc - MFC中多行cstatic文本垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829049/

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