我想更改对话框标题/标题的字体样式和字体大小(源自 CDialog)。由于标题/标题与任何资源 id 都没有关联,所以我什至不能使用 SetFont().Tell
问问题
403 次
2 回答
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();
}
于 2019-10-11T19:45:02.610 回答
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();
}
于 2019-10-14T08:47:30.690 回答