我想将CListCtrl的标题(CHeaderCtrl)设置为粗体。我不想开发自己的字体,因为我想尊重系统默认字体,每台计算机上的字体都不同。我只想将默认字体设为粗体。是否可以?下面的代码在行中抛出错误“调试断言失败”:m_headerFont.CreateFontIndirect(&lf); - 见下图。
代码示例:
class CMFCtestDlg : public CDialogEx
{
CFont m_headerFont;
//....
//...
BOOL OnInitDialog();
}
BOOL CMFCtestDlg::OnInitDialog()
{
//.......
//.......
CFont *pDefaultFont = pHeaderCtrl->GetFont();
LOGFONT lf{0};
if(pDefaultFont != nullptr && pDefaultFont->GetLogFont(&lf))
{
// If the font is MS Shell Dlg, use SystemParametersInfo to get the system font
if(_tcscmp(lf.lfFaceName, _T("MS Shell Dlg")) == 0)
{
if(SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(LOGFONT), &lf, 0))
{
lf.lfWeight = FW_BOLD;
m_headerFont.CreateFontIndirect(&lf);
pHeaderCtrl->SetFont(&m_headerFont);
}
}
}
}
尝试添加
m_headerFont.DeleteObject();
之前
m_headerFont.CreateFontIndirect(&lf);