簡體   English   中英

在 MFC 中更改靜態文本顏色

[英]Change Static Text Color in 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 重命名為其他名稱,然后使用 OnCtlColor。 假設您將其命名為IDC_STATIC_1 ,在OnCtlColor 中,使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM