如何在MFC中创建粗体和斜体标签?

Ham*_*jan 6 c++ mfc label

请不要将其标记为此问题的愚蠢:

MFC中的大胆标签

那个问题对我没有帮助; 由于某种原因,我没有看到丰富的编辑控件.相反,我相信我必须在代码中做到这一点.这是我发现的一个样本:

http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2006-10/msg00245.html

我的问题是我不想重新发明轮子并自己或通过QA测试错误.

有人必须先实现这一点.请分享您的代码.

我想做的是:

  • 保持与已创建的标签相同的字体大小,族等,但也要使其粗体和斜体.
  • 保持内存占用率相当低(不要创建任何新的不必要的对象),但也不要让应用程序进入不一致的状态.

我感谢您的帮助.

Mar*_*som 8

在父窗口上显示静态文本控件之前,您需要执行以下操作.

  1. 获取窗口的句柄: CWnd * pwnd = GetDlgItem(IDC_LABEL);
  2. 获取静态文本的当前字体: CFont * pfont = pwnd->GetFont();
  3. 获取字体的特征: LOGFONT lf; pfont->GetLogFont(&lf);
  4. 更改lfWeight和lfItalic字段lf.
  5. 将CFont对象放在父窗口中,因此它将在子窗口的整个生命周期内存在.
  6. 初始化CFont: m_font.CreateFontIndirect(&lf);
  7. 将字体设置为静态文本窗口: pwnd->SetFont(&m_font);