简体   繁体   English

MFC 如何更改 CLinkCtrl 的链接文本颜色?

[英]MFC How to change link text color of CLinkCtrl?

From this post , I have set up the code by putting in the OnInitDialog event:在这篇文章中,我通过放入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);

And from OnCtrlColor event:来自OnCtrlColor事件:

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

After the code runs, my result is:代码运行后,我的结果是:

在此处输入图片说明

If I click on it, now it works:如果我点击它,现在它可以工作:

在此处输入图片说明

But, how I can change text color?但是,如何更改文本颜色?

You may not be setting the control state correctly.您可能没有正确设置控制状态。

Please try the MFC way (it works for me).请尝试 MFC 方式(它对我有用)。 Add to your dialog class:添加到您的对话框类:

CLinkCtrl syslink;

Connect it to the resource ID of your link:将其连接到链接的资源 ID:

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

and in OnInitDialog add this:并在OnInitDialog添加:

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

I see red link with your code in OnCtlColor .我在OnCtlColor看到带有您代码的红色链接。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM