MFC 如何改变CLinkCtrl 的link 文本颜色?
MFC How to change link text color of CLinkCtrl?
从这个 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_lbWhosebug, &m_hWnd);
并且来自 OnCtrlColor
事件:
pDC->SetTextColor(RGB(255, 0, 0));
pDC->SetBkColor(normal);
pDC->SetDCBrushColor(RGB(255, 255, 255));
return (HBRUSH)GetStockObject(DC_BRUSH);
代码运行后,我的结果是:
如果我点击它,现在可以使用了:
但是,如何更改文本颜色?
您可能没有正确设置控件状态。
请尝试MFC 方式(它适用于我)。添加到您的对话框 class:
CLinkCtrl syslink;
将其连接到您的资源 ID link:
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
中看到红色 link 和你的代码。
从这个 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_lbWhosebug, &m_hWnd);
并且来自 OnCtrlColor
事件:
pDC->SetTextColor(RGB(255, 0, 0));
pDC->SetBkColor(normal);
pDC->SetDCBrushColor(RGB(255, 255, 255));
return (HBRUSH)GetStockObject(DC_BRUSH);
代码运行后,我的结果是:
如果我点击它,现在可以使用了:
但是,如何更改文本颜色?
您可能没有正确设置控件状态。
请尝试MFC 方式(它适用于我)。添加到您的对话框 class:
CLinkCtrl syslink;
将其连接到您的资源 ID link:
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
中看到红色 link 和你的代码。