当设置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的大小在::OnShowWindow
上通过SetWindowPos
方法设置。是什么原因导致了这种情况,我该如何处理?
编辑:我尝试了@rrirower的建议,现在我很困惑;将CEdit的CDC
添加到CFont的初始化中改变了文本的蒙版(您可能一开始没有看到它,但我在同一页上有其他旧字体的编辑器,这里有很大的区别):
ctrlFont1->CreatePointFont(80, "Arial Black", m_editName.GetDC());