No, It should be possible with WM_PAINT and just change the color with SetTextColor to the color your want, but i really don't see anything wrong with the give code.

Of course you can use WM_CTLCOLOR, but then all text is in the given color. If you change the color in WM_PAINT, you can paint text in several different colors.