首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MFC中更改静态文本颜色

在MFC中更改静态文本颜色
EN

Stack Overflow用户
提问于 2020-11-06 15:45:13
回答 2查看 255关注 0票数 0

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

遵循这个(MFC - change text color of a cstatic text control)和类似的建议,我在ON_WM_CTLCOLOR() message上做了以下操作:

代码语言:javascript
运行
复制
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中找不到任何等效的东西。你知道如何改变静态文本和复选框文本的颜色吗?

EN

回答 2

Stack Overflow用户

发布于 2020-11-06 16:15:50

这对我来说很有效:

将以下内容放入消息映射中:

代码语言:javascript
运行
复制
ON_WM_CTLCOLOR()

并实现类似这样的东西:

代码语言:javascript
运行
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2020-11-21 05:34:05

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

代码语言:javascript
运行
复制
case IDC_STATIC_1:
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(100,110,120);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64710627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档