A Color Check Box Class
Posted
by Radu Naiu
on January 28th, 2002
Environment: VC++ 6
This class resulted out of the lack in changing background color of checkboxes with ordinary MFC methods. It provides the possibility to change the color at any time from within your project.
To use it please do the following:
- Insert the files CColorCheck.cpp and CColorCheck.h in your project
- Include CColorCheck.h in your dialog header file YourFileDlg.h
#include "CColorCheck.h"
- Add the following code right after the includes:
class CColorCheck;
- Use the Wizard to insert a checkbox in your dialog box.
- The check box must be of type OwnerDraw but you won't find this option in the properties dialog box.
Open your resource file and look for the definition of the checkbox which will look something like:CONTROL "Check2", IDC_CHECK2, "Button", BS_AUTOCHECKBOX | BS_OWNERDRAW WS_TABSTOP,51,126,41,10and insert the option BS_OWNERDRAW as shown above. When you go back to your dialog box you will see that the checkbox now looks like a normal button. - Open the Class Wizard and add a member variable of category "Control" and variable type "CColorCheck" for each CheckBox you want to use. (i.e. m_check1...m_checkX)
- Use the member variable to access the methods of the class.
Overriden Methods are:
SetCheck(int check) = Sets the button state to checked.
GetCheck()= Retrieves the button's state.
SetBkColor(COLORREF newColor)= Sets the specified color as the background for the check box.
Other Methods are:
SetArrowColor(COLORREF newColor)= Sets the Checked-Arrow color.
SetMyTextColor(COLORREF txtColor)= Sets the caption text color. - Add the ON_BN_CLICKED message handler for each control. This will look like this:
in YourFileDlg.h:
afx_msg void OnYourCheckbox();
in YourFileDlg.cpp:
ON_BN_CLICKED(IDC_CHECK1, OnYourCheckbox) ..... void CYourDlgClass::OnYourCheckbox() { m_check1.Toggle(); }

Comments
Thank you
Posted by madwoodster on 10/05/2007 11:25amJust a note to say thank you both to the author and those who made comments, as this was just what I was looking for.
ReplyToggle()
Posted by Legacy on 04/06/2002 12:00amOriginally posted by: rookie
I got an error :'Toggle' : is not a member of 'CColorCheck'
Does Toggle is sudo code? or you did put this member function with the source?
-
Replysimple...
Posted by atiadi on 09/22/2004 05:06amvoid CColorCheck::Toggle() { if (checkFlag == 1) checkFlag = 0; else checkFlag = 1; }ReplyGood effort . . .
Posted by Legacy on 01/29/2002 12:00amOriginally posted by: Santosh Deshmukh
Pretty kool. Good effort in implementing and explaining as well. One small confusing thing is that of the classwizard, a small note expected.
Note : You need to go to the dlg header file and manually change the checkbox variable type from CButton to CColorCheck.
Reply