CDialog的标题/标题的字体样式

时间:2019-10-11 10:02:55

标签: c++ mfc cdialog

我想更改Dialog标题/标题的字体样式和字体大小(派生自CDialog)。由于标题/标题与任何资源ID都不相关,所以我什至不能使用SetFont()。告诉

2 个答案:

答案 0 :(得分:0)

您可以创建一个执行此操作的基类,然后使所有对话框类都从该类派生。只要您不更改帮助ID(m_nIDHelp),它就应该适用于基类。如果没有,则可以将自己的成员变量添加到基类中,以保存对话框的ID。

#include <afxpriv.h>

INT_PTR CModifyDialogDlg::DoModal()
{
   CDialogTemplate templ;
   if (!templ.Load(MAKEINTRESOURCE(m_nIDHelp))) // it could be different, but probably isn't
      return -1;

   templ.SetFont(_T("Comic Sans MS"), 16);

   m_lpszTemplateName = NULL;
   InitModalIndirect(templ.m_hTemplate);
   return __super::DoModal();
}

答案 1 :(得分:0)

抱歉-我无法设置评论的格式-我发现的所有提示都不起作用...所以我将其发布为答案:

另外要注意:如果要更改对话框中项目的字体,请不要参考帮助ID,而要参考资源ID。像这样:

INT_PTR CModifyDialogDlg::DoModal()
{
    dlgtemplate.Load(m_lpszTemplateName);
    dlgtemplate.SetFont(ms_DefaultFontFace, (WORD)m_LogFontHeight);
    DLGTEMPLATE *pDlgTemplate = (DLGTEMPLATE*)GlobalLock(dlgtemplate.m_hTemplate);
    m_lpszTemplateName = NULL;
    BOOL retVal = InitModalIndirect(pDlgTemplate);
    GlobalUnlock(dlgtemplate.m_hTemplate);
    return __super::DoModal();
}