The WM_CTLCOLORLISTBOX message is sent to the parent window of a list box before the system draws the list box. WM_CTCOLOREDIT too. By responding to this message, the parent window can set the text and background colors of the list box by using the given display device context handle. WM_CTLCOLORLISTBOX hdcLB = (HDC) wParam;// handle to list box display context hwndLB = (HWND) lParam; // handle to list box This is for 32 bit only for 16 you have just WM_CTLCOLOR and then need to switch on the WPARAM