【问题标题】:MFC How to change link text color of CLinkCtrl?MFC 如何更改 CLinkCtrl 的链接文本颜色?
【发布时间】:2021-06-22 03:07:16
【问题描述】:

从这个post,我通过放入OnInitDialog 事件来设置代码:

LITEM* pItem = new LITEM;

pItem->iLink = 0; // Url index is 0    

//LIF_ITEMINDEX is required for iLink, LIF_STATE is required for modifing state
pItem->mask = LIF_ITEMINDEX | LIF_STATE;

//using LIS_DEFAULTCOLORS state
pItem->state = LIS_ENABLED | LIS_FOCUSED | LIS_DEFAULTCOLORS;
pItem->stateMask = LIS_ENABLED | LIS_FOCUSED | LIS_DEFAULTCOLORS;

// Send the LM_SETITEM MESSAGE with pItem
HWND m_hWnd=nil; GetDlgItem(IDC_lbstackoverflow, &m_hWnd);

来自OnCtrlColor事件:

pDC->SetTextColor(RGB(255, 0, 0));
pDC->SetBkColor(normal);
pDC->SetDCBrushColor(RGB(255, 255, 255));
return (HBRUSH)GetStockObject(DC_BRUSH);

代码运行后,我的结果是:

如果我点击它,现在它可以工作了:

但是,我怎样才能改变文字颜色呢?

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    您可能没有正确设置控件状态。

    请尝试 MFC 方式(它适用于我)。添加到您的对话框类:

    CLinkCtrl syslink;
    

    将其连接到链接的资源 ID:

    void CMFCApplication4Dlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialogEx::DoDataExchange(pDX);
        DDX_Control(pDX, IDC_SYSLINK1, syslink);
    }
    

    并在OnInitDialog 中添加:

    syslink.SetItemState(0, LIS_ENABLED | LIS_FOCUSED | LIS_DEFAULTCOLORS, 
        LIS_ENABLED | LIS_FOCUSED | LIS_DEFAULTCOLORS);
    

    我在OnCtlColor 中看到您的代码的红色链接。

    【讨论】:

    • 感谢您的确认,我尝试更改 CTLCOLOR_STATIC 而不是 WM_CTLCOLORSTATIC,现在成功了。
    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 2015-07-29
    • 2010-12-10
    • 2021-02-18
    • 2013-11-11
    • 2010-11-18
    • 2019-03-13
    • 2022-08-17
    相关资源
    最近更新 更多