有没有办法更改MFC SDI应用程序的标题字体?

时间:2014-07-16 18:06:54

标签: c++ visual-c++ mfc visual-c++-2012

我正在尝试增加MainFrame上标题的字体大小。到目前为止,我已经尝试了几种没有良好结果的方法。欢迎任何建议。

一个。方法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);
      }

此方法会删除我的所有功能区菜单,并会产生很多异常。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可能希望看一下:http://msdn.microsoft.com/en-us/library/windows/desktop/bb688195(v=vs.85).aspx

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