Environment: VC6, Win95-XP
Introduction
This control works like “Rollout panel” in 3dsmax: When you click on a checkbox, some additional controls are shown. Another click on a checkbox will hide controls. Notice that other controls in a dialog are also moved and the dialog itself is resized. I tried to find something like this on the CodeGuru site, but the only articles I found were about expanding dialogs, which have limited functionality in comparison with this. So I decided to write my own class for this control.
How to Integrate It into Existing Code
- Create a dialog and place controls on it.
- Encircle the controls you want to be dynamically shown or hidden with static box and set their text to an empty string. Also, place a checkbox in the corner of it, as it is shown in the picture.
- Set the proper IDs for the checkbox and static (do not use IDC_STATIC because it will not work!). Let’s say you have used ID’s IDC_CHTYPE (for checkbox) and IDC_STTYPE (for static box).
- Associate variables with these two controls using ClassWizard. They should be of type CButton.
- Copy the “ExpandingCheck.h” and “ExpandingCheck.cpp” files into your source files directory.
- In your dialog’s .h file write:
#include"ExpandingCheck.h"
- Also, in your dialog’s .h file you have to find the variables created in Step 4 and make the Checkbox variable of type CExpandingCheck:
- In the constructor of your dialog, write:
- That’s all!
//{{AFX_DATA(CExpCheckTestDlg) enum { IDD = IDD_EXPCHECKTEST_DIALOG }; CExpandingCheck m_chType; //I have changed this line CButton m_stType; //}}AFX_DATA
m_chName.SetFrame(&m_stName);
If you have found any bugs or improved the code, feel free to e-mail me.