如何更改MFC SysLink Control的字体

时间:2017-11-22 01:23:38

标签: fonts hyperlink mfc

我试图用链接显示一些描述。该链接与静态单词混合,如以下样式:

请按google或其他搜索引擎搜索,访问my blog

我可以通过使用MFC syslink控件实现这一点,问题是如何更改syslink控件的字体(样式,大小)?有没有其他控件可以实现类似的功能?

1 个答案:

答案 0 :(得分:2)

使用CFont类创建一个字体,具有自定义大小和样式。像其他对话框控件一样在CWnd::SetFont中使用此字体:

//declare class members:
class CMyDialog : public CDialog
{
    CFont m_font; //declare font here, not a temporary font on the stack
    CLinkCtrl m_linkCtrl;
    ...
};

BOOL CMyDialog::OnInitDialog()
{
    BOOL res = CDialog::OnInitDialog();

    //get current dialog font
    CFont *dialogfont = GetFont();
    LOGFONT logfont;
    dialogfont->GetLogFont(&logfont);

    //create new font
    m_font.CreateFont(logfont.lfHeight, //change font height
        0, 0, 0, 
        FW_BOLD, TRUE, 0, 0, //change bold, italic, underline, strikeout
        0, 0, 0, logfont.lfQuality, 0, logfont.lfFaceName);

    m_linkCtrl.SubclassDlgItem(IDC_SYSLINK1, this);
    m_linkCtrl.SetFont(&m_font, TRUE);

    return res;
}

要更改syslink控件的颜色,您必须告诉控件接受更改:

LITEM item = { 0 };
item.mask = LIF_ITEMINDEX | LIF_STATE;
item.state = LIS_DEFAULTCOLORS;
item.stateMask = LIS_DEFAULTCOLORS;
m_linkCtrl.SetItem(&item);

然后覆盖OnCtrlColor以更改文字颜色

相关问题