在对话框内,我检查了一个静态控件,该控件是在资源编辑器中使用默认高度 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);
蒂亚!!
您从
GetDC()
返回的DC包含默认字体,这几乎肯定不是控件实际使用的字体。
您需要向其发送一条
WM_GETFONT
消息以获取其正在使用的字体,并在测量文本之前将其选择到 DC 中。
记得保存旧的字体句柄并在释放 DC 之前恢复它。