Checkbox/static color

I've colored my window :RGB(195,217,250)

And I have created a static and a checkbox in my WM_CREATE but they come out that there is a grey rectangle arround the text I was wondering how to color it the same as the solidbrush of the window, I've tried doing SetBkColor(GetDc(..),[color]) in the WM_CREATE but it doesn't work. Please help.

//Register the window class
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = 0;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra=0;
	wc.cbWndExtra=0;
	wc.hInstance=hInst;
	wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
	wc.hCursor = LoadCursor(NULL,IDC_ARROW);
	wc.hbrBackground=CreateSolidBrush(RGB(195,217,250));//(HBRUSH)(COLOR_WINDOW);
	wc.lpszMenuName=NULL;
	wc.lpszClassName=g_szClassName;
	wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
 
//-----------------------------------------------------------------------------------------------------------------
//create seach label
	hwndlblSearch = CreateWindowEx(0,TEXT("static"),TEXT("Table/View name"),SS_LEFT|WS_CHILD|WS_VISIBLE,33,10,116,17,hwnd,(HMENU)lblSearch,NULL,NULL);
 
//Checkbox Table
	hwndcbTable = CreateWindowEx(0,TEXT("BUTTON"),TEXT("Table"),BS_AUTOCHECKBOX|WS_VISIBLE|WS_CHILD,265,32,100,25,hwnd,(HMENU)cbTable,NULL,NULL);

Open in new window

LVL 1
james2432Asked:
Who is Participating?
 
pgnatyukConnect With a Mentor Commented:
Zoppo said that the easiest way to implement your idea is to make your own control that will know how to draw itself.
Once we tried to do that without own control - terrible - set a hook was really not easy.
It's about the checkbox.
"static" means a text label - CStatic? if yes, look on this site for WM_CTLCOLOR or for OnCtlColor.
0
 
ZoppoCommented:
Hi james2432,

IMO there's no easy solution for this - the problem simply is that a standard checkbox just draws the text in none-transparent (opaque) drawing mode, so the background of the text is always filled with the background color (GetBkColor) of the DC used for its drawing.

You could try to replace the WndProc of the checkbox (with SetWindowLong) with one of your own which handles WM_PAINT message in a way it modifies the DC's (you can retrieve it with GetDC) text drawing mode to TRANSPARENT (SetBkMode), then call it's original WndProc (CallWndProc) and, if needed, afterwards restore the previous drawing mode.

Hope that helps,

ZOPPO
0
 
james2432Author Commented:
I don't really understand...
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
pgnatyukCommented:
More info:
1. here is a proposal (color checkbox class): http://www.codeguru.com/cpp/controls/controls/checkboxcontrols/article.php/c5319
2. here is the same question (maybe interesting to read): http://www.eggheadcafe.com/forumarchives/win32programmergdi/Sep2005/post23674033.asp
 
0
 
james2432Author Commented:
Yeah this was WIN32..

Anyways i got the label(static) with WM_CTLCOLORSTATIC message
I set a brush to the background color
SetBkColor()
SetBkMode() to transparent
and returned the brush I created

the checkbox dispite being a "BUTTON" seeing as it's static text it can be done via same WM
the same goes for a groupbox

No need for subclassing
Thank you
0
 
james2432Author Commented:
Because this is a win32api application I couldn't use MFC or AFX, but you set me on the right track
0
All Courses

From novice to tech pro — start learning today.