[英]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.