是否有一种方法可以改变MFC SDI应用程序的标题字体?

Is there a way to change the title font for a MFC SDI application?

本文关键字:应用程序 SDI MFC 标题 字体 标题字 改变 方法 一种 是否      更新时间:2023-10-16

我正在尝试增加主机上标题的字体大小。到目前为止,我已经尝试了几种方法,但效果都不太好。欢迎提出任何建议。

。方法1

    void CMainFrame::OnPaint()
{
CPaintDC dc(this); // device context for painting
    LOGFONT lF;
    lF.lfHeight = 10;
    lF.lfWidth = 0;
    lF.lfWeight = FW_NORMAL;
    lF.lfItalic = FALSE; //TRUE;
    lF.lfUnderline = FALSE; //TRUE;
    lF.lfStrikeOut = FALSE; //TRUE;
    lF.lfEscapement = 0;
    lF.lfOrientation = 0;
    _tcscpy_s(lF.lfFaceName, _T("Verdana"));
    CFont m_font;
    m_font.CreateFontIndirect(&lF);
    SetFont(&m_font);
       }

这不会改变任何事情。

B。方法2

     void CMainFrame::OnPaint()
     {
     CPaintDC dc(this); // device context for painting
    LOGFONT lF;
    lF.lfHeight = 10;
    lF.lfWidth = 0;
    lF.lfWeight = FW_NORMAL;
    lF.lfItalic = FALSE; //TRUE;
    lF.lfUnderline = FALSE; //TRUE;
    lF.lfStrikeOut = FALSE; //TRUE;
    lF.lfEscapement = 0;
    lF.lfOrientation = 0;
    _tcscpy_s(lF.lfFaceName, _T("Verdana"));
    CFont m_font;
    m_font.CreateFontIndirect(&lF);
    BOOL fRedraw = TRUE;
    SendMessageToDescendants(WM_SETFONT, (WPARAM)m_font.m_hObject);
      }

这种方法删除了我所有的功能区菜单,并创建了许多异常。

您可能想看看这个:http://msdn.microsoft.com/en-us/library/windows/desktop/bb688195(v=vs.85).aspx

然而,正如Mark Ransom所说,这并不容易。

标题栏实际上是由操作系统绘制和处理的,程序无法控制它。有一个操作系统范围的设置来改变它。许多应用程序使用自己的标题,以便他们可以发挥它的风格。