خوب ، خودتان جواب را دادید .
در MFC و Win32 باید از طریق همان کدها و پیام هاِ آن ، رنگ ها را تغییر داد ، برای درک درست پیام ها ابتدا باید بر روی پیام های win32 کار کنید تا متوجه شوید که با MFC چگونه عمل کنید ؛ قبلا در این صفحه توضیحات داده شده است:
https://barnamenevis.org/showthread.php?t=74998
در MFC نیز به همان شکل در رویداد OnCtlColor و توسط CTLCOLOR_STATIC (برای Static control ها) به همان شکل به جای دستورات فوق انجام می شود که باید ID کنترل مورد نظر را هم مورد تست قرار دهید و فقط برای همان مورد ، یک brush با رنگ دلخواه برگردانید (برای پشت زمینه) و برای بقیه کنترل ها مقدار قبلی را برگردانید.
برای تغییر رنگ نوشته از طریق SetTextColor با DC مربوط به آن کنترل می توانید رنگ text را تغییر دهید:
HBRUSH CZilchDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC)
{
// Set the text color to red
pDC->SetTextColor(RGB(255, 0, 0));
pDC->SetBkMode(TRANSPARENT);
hbr = m_brush;
}
return hbr;
}





پاسخ با نقل قول