Click here to Skip to main content
Licence 
First Posted 4 Nov 2000
Views 100,157
Bookmarked 40 times

EZOptionsDlg - Netscape Preferences like dialog

By | 16 Apr 2001 | Article
A modified property sheet with the tree control replacing the tabs.

[Sample page 1 - 30K]

[Sample page 2 - 30K]

Introduction

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:

Step 1

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"

Step 2

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.

Step 3

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);

Step 4

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.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Lakshmi Vyas

Web Developer

United States United States

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
QuestionHow to ad minimize icon on dialog style?? PinmemberEvan Lin8:12 1 Jun '05  
GeneralGood stuff Pinmemberantred111:33 23 Mar '05  
GeneralTabbing PinmemberDan Poch7:34 11 Jan '05  
GeneralDir List Box PinmemberZloccowick23:42 14 Feb '02  
GeneralTab order is not working. PinmemberAnonymous22:15 6 Feb '02  
Tab order is not working?
Help me, please.Frown | :(
GeneralGreat job. (Some modifications for dialog based app.) Pinmemberbwei23:41 27 Feb '01  
GeneralBetter one exists... PinmemberAnonymous11:55 16 Jan '01  
GeneralBetter one exists... where exactly ? PinmemberGuy LECOMTE22:19 17 Apr '01  
GeneralRe: Better one exists... where exactly ? PinmemberHenk Devos2:29 21 May '01  
GeneralRe: Better one exists... PinmemberAnonymous5:44 12 Apr '02  
GeneralEdit controls, tab order and more PinmemberAnonymous1:27 10 Nov '00  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web02 | 2.5.120528.1 | Last Updated 17 Apr 2001
Article Copyright 2000 by Lakshmi Vyas
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid