我正在尝试更改MFC应用程序对话框窗口中静态文本(以及复选框项)的颜色。
遵循这个(MFC - change text color of a cstatic text control)和类似的建议,我在ON_WM_CTLCOLOR()
message上做了以下操作:
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中找不到任何等效的东西。你知道如何改变静态文本和复选框文本的颜色吗?
发布于 2020-11-06 16:15:50
这对我来说很有效:
将以下内容放入消息映射中:
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;
}
发布于 2020-11-21 05:34:05
当您从“工具箱”添加静态文本控件时,它将获得ID IDC_STATIC。您需要将此ID重命名为其他名称,然后使用OnCtlColor。假设您将其命名为IDC_STATIC_1,在OnCtlColor中使用:
case IDC_STATIC_1:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(100,110,120);
https://stackoverflow.com/questions/64710627
复制相似问题