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

时间:2010-04-13 17:54:30

标签: c++ mfc label

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

Bold labels in MFC

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

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

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

有人必须先实现此目的。请分享您的代码。

我想做的是:

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

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

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