Unfortunately, the WM_CTLCOLORBTN doesn't work for buttons as the other WM_CTLCOLOR* messages work for their respective controls. If you want different coloured buttons you'll have to create your own or use owner-drawn ones.

This behaviour is described by Petzold:
Programming Windows, 5th ed. by C. Petzold. Ch9 Child Window Controls
Only the pushbuttons and owner draw buttons send WM_CTLCOLORBTN to their parent windows, and only owner draw buttons respond to the window processing of the message using the brush for coloring the background. This is fairly useless because the parent window is responsible for drawing owner draw buttons anyway.