如何在CEditbox上调整字体大小以适合文本?

时间:2019-05-02 01:12:06

标签: fonts visual-studio-2017 mfc editbox

我正在使用MFC框架。

我有一个CEdit控件,用于显示状态。

如何更改字体大小以适合文本?
(爱荷华州,我希望字体大小尽可能大以便文本适合。)

加分:如何使文本居中?

我不是MFC框架的专家。

以下是一些示例文本:

通过
失败
失败-自测
通过自我测试

1 个答案:

答案 0 :(得分:0)

首先,编辑框是一个UI项,允许用户键入文本,但是您发布的示例字符串看起来像状态或结果。用户是否必须输入“ FAILED-SELF TEST”之类的代码?我认为您宁愿需要一个只读控件,例如@Barmak Shemirani建议的静态控件(通常是凹陷,蚀刻或静态边缘样式)。

无论如何,我都会建议以下内容:

  • 首先,如果有空间,请考虑扩大控件。通常,对话框上的所有控件都使用相同的字体(默认情况下为默认字体)。某些控件使用不同的字体可能看起来很奇怪(尽管可以接受)。
  • 第二(如果您不会扩大控件的大小),请尝试使用字体大小,然后尝试以编程方式设置字体大小:将文本设置为FAILED-SELF TEST(最长),然后“手动”设置字体大小到最大可能的范围(以便使文本适合),看看您是否得到可接受的结果。

如果是这样,则可以以编程方式设置字体大小。 MFC在某种程度上是WinAPI的“薄包装”,并且所有WinAPI项都可以作为MFC类的公共成员使用(例如m_hWnd是任何CWnd派生类的WinAPI窗口的句柄),因此您宁愿在此处使用WinAPI级别。您应该在初始化期间检查/设置字体大小(WM_INITDIALOG消息,映射到OnInitDialog()处理程序)。这些步骤是:

  • 检查(默认)字体是否正常:使用DrawText()功能并设置DT_CALCRECT标志。这实际上不会绘制任何文本,而是将返回所需的大小(矩形)。也添加一些边距(请进行实验,但至少应为4像素-框架的两条垂直线,每侧各1像素)。如果小于或等于控件的大小(或者,您可以使用文本宽度进行测试,而没有多余的空白,而不是控件的工作区,而不是控件的总大小),这意味着默认字体是可以的,并且不需要其他操作。
  • 如果不是,请获取控件的字体,然后使用相同的参数(大小除外)创建一个新字体,该字体应减小1(请注意lfHeight参数或成员,如果为负,则为而是“增加”)。检查此字体现在是否可以,如果没有,请重复此步骤,直到文本适合为止。
  • 我不建议您尝试增加字体大小,因为这也需要针对控件的高度进行测试,但是如果您愿意...

希望这会有所帮助,尽管我不知道这样做是否值得。