Handle the WM_CTLCOLOR message. Here's a sample in MFC-style code that illustrates the technique.
HBRUSH CTestbed2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr; switch (nCtlColor) { case CTLCOLOR_STATIC: pDC->SetTextColor (RGB(128,0,0)); // red text. hbr = (HBRUSH)GetStockObject(NULL_BRUSH); break; default: hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); break; } return hbr; }
If you wanted to change the background colour of your statics, you could do it by adding a call to SetBkColor. For instance
pDC->SetBkColor (RGB(0,0,0));
would give you a black background for your static text. Incidentally, you can combine this technique with Tip #11 to neaten up dialogs with bitmap backgrounds. Just add the line
pDC->SetBkMode (TRANSPARENT);
to the CTLCOLOR_STATIC handler, and your bitmap will show through all the static item backgrounds.
Download