控件字体问题
控件:Combo Box
代码:
static CFont font;
font.CreateStockObject(ANSI_VAR_FONT);
combo.SetFont(&font);
font.CreateStockObject(ANSI_VAR_FONT);
combo.SetFont(&font);
随后对 Combo Box 进行 AddString 操作。 字体将是 ANSI_VAR_FONT
CDC* pDC = pComboBox->GetDC();
pDC->GetTextFaceW(strTest); // Notice Here @1
static CFont font;
font.CreateStockObject(ANSI_VAR_FONT);
pDC->SelectObject(font);
pDC->GetTextFaceW(strTest); // Notice Here @2
接着获取控件的CDC指针。在@1你可以发现,此时的字体是“SYSTEM”,和控件本身的SetFont设定的字体无关。直到我们令CDC装载这个字体,在随后的@2中,出现的才是与ANSI_VAR_FONT对应的字体。
这种情况的知晓对以下情况有帮助:
1.通过 CComboBox::AddString 添加字符串,对CDC加载与控件一致的字体,得以计算所添加字符串的逻辑长度。以次动态控制Combo Box的显示长度。