默认静态控件高度为 8(对话框单位) - 文本适合,但 DrawText DT_CALC 说它太小?

问题描述 投票:0回答:1

在对话框内,我检查了一个静态控件,该控件是在资源编辑器中使用默认高度 8 个对话框单位创建的。 文本看起来不错,但是如果我使用

DrawText()
使用
DT_CALC
检查所需的文本高度,它会说 3 像素(假设像素)太小? 它说现有的静态控件高度是13,但是绘制文本矩形计算说它需要是16;如果它是 16,那么与它后面的控件相比,它看起来很高。 为什么它说需要 16,而 13 似乎可以正常工作?

CString cstr=_T("Some Text...");
CRect textsize;
m_ctlStaticText.GetDC()->DrawText(cstr, &textsize, DT_CALCRECT);
CRect rect;
m_ctlStaticText.GetWindowRect(rect);

蒂亚!!

winapi gdi
1个回答
0
投票

您从

GetDC()
返回的DC包含默认字体,这几乎肯定不是控件实际使用的字体。

您需要向其发送一条

WM_GETFONT
消息以获取其正在使用的字体,并在测量文本之前将其选择到 DC 中。

记得保存旧的字体句柄并在释放 DC 之前恢复它。

© www.soinside.com 2019 - 2024. All rights reserved.