控件字体问题

来源:互联网 发布:网络虚拟号发短信软件 编辑:程序博客网 时间:2024/05/01 11:10

控件:Combo Box

代码

    static CFont 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的显示长度。