![]() |
Desktop Development »
Dialogs and Windows »
Dialogs
Intermediate
EZOptionsDlg - Netscape Preferences like dialogBy Lakshmi VyasA modified property sheet with the tree control replacing the tabs. |
VC6Win2K, MFC, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
![[Sample page 1 - 30K]](ezoptionsdlg/EZOptionsDlg1.gif)
![[Sample page 2 - 30K]](ezoptionsdlg/EZOptionsDlg2.gif)
The point behind this article is to build a base for building a Netscape Prefs like dialog without compromising on the benefits provided by CPropertySheet and CPropertyPage.
To implement this dialog:
Add the files present in the source zip file above, to your project.
Add the following lines in some globally available file like stdafx.h:
#include "EZPropertyPage.h" #include "EZOptionsDlg.h"
Add a dialog to your application and add a class for it, say CPrefDlg. Replace every occurrence of CDialog with CEZOptionsDlg in the header file and the source file of the dialog. This dialog takes the place of a property sheet.
Edit the dialog template and add a tree control somewhere on the dialog.
Add the following lines to the OnInitDialog handler to introduce your tree control to the parent class CEZOptionsDlg:
// Assuming IDC_OPT_TREE and IDC_LABEL are the ID's // of the tree control and the static control respectively SetTreeCtrl(IDC_OPT_TREE);
Add a property page, CPage1 say, to your application and replace every instance of CPropertyPage with CEZPropertyPage in the header and source files.
Now, as you would do in a regular property sheet, declare a member variable for CPage1 in the dialog class (CPrefDlg) created in step 2. Add the following code similar to that of the normal CPropertySheet::AddPage. But CPage1::Create should be called before calling AddPage.
// If IDD_PROPPAGE_PAGE1 id the dialog resource ID m_page1.Create(IDD_PROPPAGE_PAGE1); AddPage(&m_page1,_T("Page1"));
If you want to add a page as a child item, add the title of the parent item as the third parameter. To avoid unexpected behavior, the titles should be unique.
Here is the OnInitDialog function:
// in PrefDlg.h #include "EZOptionsDlg.h" class CPage1; class CPrefDlg:public CEZOptionsDlg { ... private: CPage1 m_page1; }; // in PrefDlg.cpp BOOL CPrefDlg::OnInitDialog() { ... // Assuming IDC_OPT_TREE is the ID's of the Tree control // and the static control respectively SetTreeCtrl(IDC_OPT_TREE); ... m_page1.Create(IDD_PROPPAGE_PAGE1); AddPage(&m_page1,_T("Page1")); SelectPage(_T("Page1")); m_wndTree.ExpandAll(); }
Again, to remove a page, the title is to be used. This is the reason why I say the titles should be unique.
RemovePage(_T("Page1"));
Repeat the above step to add more pages.
The demo project should do the rest of the explanation.
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 16 Apr 2001 Editor: Smitha Vijayan |
Copyright 2000 by Lakshmi Vyas Everything else Copyright © CodeProject, 1999-2009 Web16 | Advertise on the Code Project |