This page has moved to http://www.dustyant.com/win32. Please update your bookmarks.
In this tutorial you will learn to
I will assume that you are familiar with the basics of win32 programming. If you aren't you might want to take a look at my other tutorials here.
Changing the foreground and background color of a window control involves,
WM_CTLCOLOR*
messagesSetBkColor()
and SetTextColor()
functionsThis is done in the callback handler of the parent window. The relevant parts of the code is as follows
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow) { ...// Initialise colors crEditFg = RGB(0,255,0); // Green ON crEditBg = RGB(0,0,0); // Black hbrEditBg = CreateSolidBrush(crEditBg); crScrollFg = RGB(0,0,0); // Black ON crScrollBg = RGB(255,255,0); // Yellow hbrScrollBg = CreateSolidBrush(crScrollBg); crListFg = RGB(0,0,255); // Blue ON crListBg = RGB(255,255,0); // Yellow hbrListBg = CreateSolidBrush(crListBg);... } // Callback function for the Main Window class LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { RECT rc; switch(msg) { ...case WM_CTLCOLOREDIT: // wParam contains display context // lParam contains handle of edit control SetBkColor((HDC)wParam, crEditBg); //Make background black SetTextColor((HDC)wParam, crEditFg); //Make foreground green return (LRESULT)hbrEditBg; case WM_CTLCOLORLISTBOX: SetBkColor((HDC)wParam, crListBg); SetTextColor((HDC)wParam, crListFg); return (LRESULT)hbrListBg; case WM_CTLCOLORSCROLLBAR: SetBkColor((HDC)wParam, crScrollBg); SetTextColor((HDC)wParam, crScrollFg); return (LRESULT)hbrScrollBg;... } }
Its as simple as that!
Next, we will take a look at subclassing. Subclassing involves,
SetWindowLong(?, GWL_WNDPROC, ?)
function.NOTE: This part of the tutorial has been moved to Lesson 5 - Introducing Subclassing. Click here to go to this lesson.