Download Source Code and Examples
To add the sheet control to CChildFrame in a MDI application:
- add a new member CSheetsWnd m_wndSheets to CChildFrame class.
- override CChildFrame::OnCreateClient, and inside the function call m_wndSheets.Attach(this). From this moment all child windows from CChildFrame are put in sheet the contol, each view with one page.
To add the sheet control to a CDialog:
- add a new member CSheetsWnd m_wndSheets to your dialog class.
- create n dialogs in resource editor, each with the WS_CHILD style.
- declare n dialog members in you dialog. One of these dialogs must be created with WS_VISIBLE style.
- overwrite OnInitDialog in your dialog class, and add m_wndSheets.Attach(this).
- call the Create function for each dialog declared as a member variable. (m_dlg1.Create(IDD_DIALOG1, this));
Suppose that your dialog contains one button IDOK and a button IDCANCEL. These buttons are children of your dialog. To eliminate the buttons from the pages sheet control you must derive a new class CSheetsDialog, and overwrite GetFirstView(), GetNextView() virtual functions from CSheetsWndas shown below. Of course, the variable type of m_wndSheets must be changed to the new class CSheetDialog.
The class CSheetsWnd could be easily extended with more features. I will try
to put more features to this class.
// Declare this struct for store a set of ID's control.
m_mapCtrlIDs[IDOK] = TRUE;
m_mapCtrlIDs[IDCANCEL] = TRUE;
// Check if ID is in map or not.
BOOL Is(UINT id)
BOOL bValue = TRUE;
return m_mapCtrlIDs.Lookup(id, bValue);
// class CSheetsDialog header
class CSheetsDialog : public CSheetsWnd
virtual CWnd* GetNextView();
virtual CWnd* GetFirstView();
CWnd* GetNextViewValid(CWnd* pWnd);
static SCtrlID m_ctrlID;
// class CSheetsDialog implementation
// Scan if ID of pWnd is not in IDOK or IDCANCEL
CWnd* CSheetsDialog::GetNextViewValid(CWnd * pWnd)
while (pWnd && (m_ctrlID.Is(pWnd->GetDlgCtrlID())))
pWnd = CSheetsWnd::GetNextView();
Last updated: 12 August 1998