在设置字体时,我遇到了CEdit的尴尬行为:对于某种字体大小,字母如' g'或者' j'无论CEdit的高度如何,底部都会丢失。以下是两个例子:
CFont *ctrlFont = new CFont();
ctrlFont ->CreatePointFont(80, "Arial Black");
CEdit m_editName;
m_editName.SetFont(ctrlFont);
有了这个结果:
但是
ctrlFont ->CreatePointFont(100, "Arial Black");
一切都很好
正如您所看到的,在两种情况下,CEdit的高度都大于文本的高度。父控件是CDialog;字体在::OnInitDialog
上设置,CEdit的大小在SetWindowPos
上使用::OnShowWindow
方法设置。什么可能导致这种情况,我应该如何处理呢?
编辑:我已经尝试过@rrirower的建议,现在我很困惑;将CEdit的CDC
添加到CFont的初始化会改变文本的掩码很多(你可能没有看到它从开始,但我有其他编辑与旧字体在同一页面上并且存在很大差异):
ctrlFont1->CreatePointFont(80, "Arial Black", m_editName.GetDC());
答案 0 :(得分:1)
使用所有参数调用CreateFont()
font.CreateFont(
12, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("Arial"))); // lpszFacename