Click here to Skip to main content
6,596,602 members and growing! (20,557 online)
Email Password   helpLost your password?
Desktop Development » Dialogs and Windows » Dialogs     Intermediate

EZOptionsDlg - Netscape Preferences like dialog

By Lakshmi Vyas

A modified property sheet with the tree control replacing the tabs.
VC6Win2K, MFC, Dev
Posted:4 Nov 2000
Updated:16 Apr 2001
Views:88,880
Bookmarked:34 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
22 votes for this article.
Popularity: 5.78 Rating: 4.31 out of 5

1

2

3
2 votes, 50.0%
4
2 votes, 50.0%
5

[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


Member

Occupation: Web Developer
Location: United States United States

Other popular Dialogs and Windows articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 11 of 11 (Total in Forum: 11) (Refresh)FirstPrevNext
GeneralHow to ad minimize icon on dialog style?? PinmemberEvan Lin9:12 1 Jun '05  
GeneralGood stuff Pinmemberantred112:33 23 Mar '05  
GeneralTabbing PinmemberDan Poch8:34 11 Jan '05  
GeneralDir List Box PinmemberZloccowick0:42 15 Feb '02  
GeneralTab order is not working. PinmemberAnonymous23:15 6 Feb '02  
GeneralGreat job. (Some modifications for dialog based app.) Pinmemberbwei0:41 28 Feb '01  
GeneralBetter one exists... PinmemberAnonymous12:55 16 Jan '01  
GeneralBetter one exists... where exactly ? PinmemberGuy LECOMTE23:19 17 Apr '01  
GeneralRe: Better one exists... where exactly ? PinmemberHenk Devos3:29 21 May '01  
GeneralRe: Better one exists... PinmemberAnonymous6:44 12 Apr '02  
GeneralEdit controls, tab order and more PinmemberAnonymous2:27 10 Nov '00  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin 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