更改MFC中的静态文本颜色



我正在尝试更改MFC应用程序中对话框窗口中静态文本(以及复选框项(的颜色。

根据这一点(MFC-更改cstatic文本控件的文本颜色(和类似的建议,我对ON_WM_CTLCOLOR()消息进行了以下操作:

HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd *pWnd, UINT nCtlColor)
{
pDC->SetTextColor(RGB(255, 0, 0));
return (HBRUSH)GetStockObject(NULL_BRUSH);
}

问题是,这只会影响编辑文本框,而不会影响静态文本或复选框。那些仍然有黑色文本。

我还试图寻找类似于winapi的WM_CTLCOLORSTATIC消息的东西,因为它在win32应用程序中运行良好,但在MFC中找不到任何等效的东西。知道如何更改静态文本和复选框文本的颜色吗?

这对我有效:

把这个放在消息图中:

ON_WM_CTLCOLOR()

并实现这样的东西:

HBRUSH CSomeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = __super::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_SOMESTATIC)
{
// display the static control IDC_SOMESTATIC in red
pDC->SetTextColor(RGB(255, 0, 0));
}
return hbr;
}

当您从工具箱添加静态文本控件时,它将获得ID IDC_Static。您需要将此ID重命名为其他ID,然后使用OnCtlColor。假设您将其命名为IDC_STATIC_1,在OnCtlColor中,使用:

case IDC_STATIC_1:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(100,110,120);

最新更新