在对话框内,我检查了一个 STATIC 控件,该控件是在资源编辑器中使用默认高度 8 个对话框单位创建的。 文字看起来不错。
但是,如果我使用
DrawText()
使用 DT_CALCRECT
检查所需的文本高度,它会说 3 像素(假设像素)太小?它说现有的STATIC控件高度是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);
您从
GetDC()
返回的DC包含默认字体,这几乎肯定不是控件实际使用的字体。
您需要向控件发送一条
WM_GETFONT
消息以获取其正在使用的字体,然后在测量文本之前将该字体选择到 DC 中。
记得保存旧的字体句柄并在释放 DC 之前恢复它。