微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在MFC中更改静态文本颜色

如何解决在MFC中更改静态文本颜色

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

遵循此(MFC - change text color of a cstatic text control)和类似的建议,我对,消息进行了以下操作:

ON_WM_CTLCOLOR()

问题在于,这仅影响编辑文本框,而不影响静态文本或复选框。那些仍然有黑色文字

我还试图寻找类似于winapi的HBrush CMyDialog::OnCtlColor(CDC* pDC,CWnd *pWnd,UINT nCtlColor) { pDC->SetTextColor(RGB(255,0)); return (HBrush)GetStockObject(NULL_Brush); } 消息,因为该消息在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));
  }

  return hbr;
}
,

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。