我想更改Dialog标题/标题的字体样式和字体大小(派生自CDialog)。由于标题/标题与任何资源ID都不相关,所以我什至不能使用SetFont()。告诉>
答案 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();
}