Question: I am stuck with WIN32 ( no .NET or anything managed )

Answer: 
WM\_CTLCOLORSTATIC was the correct way to control the color of the group box title.

However, it no longer works: If your application uses a manifest to include the version 6 comctl library, the Groupbox control no longer sends the `WM_CTLCOLORSTATIC` to its parent to get a brush. If your dialog controls look ugly, square and grey - like the windows 95 controls, then you don't have xp styles enabled and you can control the color of group boxes. But thats a terrible sacrifice to make! :P

Next, most of the standard controls send `WM_CTLCOLORxxx` messages to their parent (the dialog) to control their painting. The only way to identify the controls is to look up their control IDs - which is why assigning controls a identifier that indicates that that control needs a specific color or font is a good idea. i.e. Don't use `IDC_STATIC` for controls that need red text. Set them to `IDC_DRAWRED` or some made up id.

Dont use `GetDlgItem(hwndDlg,IDC_ID) == hwndCtl` to test if the `WM_CTLCOLOR` message is for the correct control: GetDlgItem will simply return the handle of the first control on the dialog with the specific Id, which means only one control will be painted.

```
case WM_CTLCOLORSTATIC:
  if(GetWindowLong( (HWND)lParam, GWL_ID) == IDC_RED)
    return MakeControlRed( (HDC)wParam );

```

You always\* need to return a HBRUSH from a WM\_CTLCOLORxxx message - even if you really just want to 'tamper' with the HDC being passed in. If you don't return a valid brush from your dialog proc then the dialogs window procedure will think you didn't handle the message at all and pass it on to DefWindowProc - which will reset any changes to the HDC you made.
Instead of creating brushes, the system has a cache of brushes on standby to draw standard ui elements: [`GetSysColorBrush`](http://msdn.microsoft.com/en-us/library/dd144927(VS.85).aspx)

Of course, you DON'T always need to return an HBRUSH. IF you have the xp theme style enabled in your app, you are sometimes allowed to return null :- because xp theme dialogs have differently colored backgrounds (especially on tab controls) returning a syscolor brush would result in ugly grey boxes on a lighter background :- in those specific cases the dialog manager will allow you to return null and NOT reset your changes in the DC.
I think [WM\_CTLCOLORSTATIC notification](http://msdn.microsoft.com/en-us/library/bb787524(VS.85).aspx) might be what you're after.