A generic Tree Property Sheet control | CodeGuru

A generic Tree Property Sheet control

CTreePropertySheet This class implements a generic tree property control (see picture above). Its features are: – Supports variable width tree control – Autosizing depending on the size of the dialogs contained – As this version is now based upon the CPropertySheet/ CPropertyPage model, all features of these are available. – Various styles(for example, like Netscape […]

Written By
CodeGuru Staff
CodeGuru Staff
Jul 25, 1999
2 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

CTreePropertySheet


This class implements a generic tree property control (see picture above).







Its features are:



Supports variable width tree control



Autosizing depending on the size of the dialogs contained



As this version is now based upon the CPropertySheet/ CPropertyPage model, all


features of these are available.



Various styles(for example, like Netscape Communicator

s property sheet)



Extensibility: Allows to integrate user defined controls (like buttons or static


text boxes) and easily position them.


Now supports modeless property sheets as well.







How to implement a CTreePropertySheet in your application:


Step 1.



    Insert “TreePropertySheet.cpp” to your application.


Step 2.



    Insert an



    #include “TreePropertySheet.h”



    in the class implementation
    file in which you want to use the CTreePropertySheet.

Step 3.



    Define a function which invokes the property sheet, for example:


    void CMyView::OnPropertySheet()
    {
    	// TODO:
    }
    


Step 4.



    Create a CTreePropertySheet object in the handler and the property pages you
    want to use with CTreePropertySheet:
    CTreePropertySheet tpsSheet;
    CGeneralPrefsPage cGeneralPrefs;
    COtherPrefsPage cOtherPrefs;
    // All dialogs contained in the property sheet must (now) be allocated from the stack.

    Caution: To make it work, the dialogs you want to include must have the following
    style:

    Style: ‘Child’

    Border: None
    Caption: Yes
    – Set the caption to the text you wish to appear when the page is selected.

    – All other options must be unchecked.


Step 5.



    Add the dialogs to the tree property sheet:
    …
    tpsSheet.AddPage(tps_item_node,&cGeneralPrefs);
    tpsSheet.AddPage(tps_item_node,&cOtherPrefs);
    

    You have to specify the resource ID when adding the dialog. The text argument
    is the title shown up in the tree control, ‘tps_item_node’ tells that this is
    a simple node in the tree.

    (See below for more information)

Step 6.


    Start the property sheet:
    …
    int nRetCode=tpsSheet.DoModal();

    Optionally, you can set a special pre-defined style before
    DoModal():

    …
    tpsSheet.SetLikeNetscape();
    int nRetCode=tpsSheet.DoModal();






Remarks

To set up the tree structure, there are three different attributes for ‘AddPage()’:

tps_item_branch This item has sub-items. All following items are one level
below this item, until a ‘tps_item_endbranch’ is found.
tps_item_node This item is a simple node in the tree.
tps_item_endbranch This item is the last item of the current sub-branch(which was
initiated with an tps_item_branch). All following items are on the
same level as the corresponding ‘tps_item_branch’ entry.

To make it clearer, please take a look at the table below:

(tree control contents) (code)
+ Main preferences AddPage(tps_item_branch, &cMainPrefsPage);
&nbsp&nbsp&nbsp&nbsp- Directories AddPage(tps_item_node, &cDirectoriesPage);
&nbsp&nbsp&nbsp&nbsp- User information AddPage(tps_item_node, &cUserPage);
&nbsp&nbsp&nbsp&nbsp- Plugins AddPage(tps_item_endbranch, &cPluginPage);
– Security AddPage(tps_item_node, &cSecurityPage);



If you want to enhance the CTreePropertySheet by own controls or buttons,
this can be done using InsertExtraControl() / InsertExtraSpace().

For more information about these functions, please take a look into the HTML help file(see below) and into
the example project.


Advertisement

Downloads

Download help file – 29 KB

Download demo project – 52 KB

Download source – 14 KB




These files can also be downloaded at
http://members.xoom.com/softserv/tps_index.html

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.