(reprinted) Introduction to VS2010/MFC Programming 13 (Dialog Box: Property Page dialog box and related classes)

Source: Internet
Author: User

The modal dialog box and the Non-modal dialog box are described earlier, and this section begins with the chicken peck Rice Speaking a special dialog box--Property Page dialog box. In addition, the majority of the tutorial on the various versions of VC can be applied or slightly modified can be, but in the end is based on the VS2010 version, so the "VC++/MFC programming Primer" to "VS2010/MFC programming".

Classification of Property Page dialog boxes

Property Pages dialog box presumably everyone is not unfamiliar, XP system desktop right-click Properties, Pop-up is the Property Page dialog box, it through the tabs to switch individual pages. In addition, the wizard dialog box that we used when we created the MFC project is also part of the property Pages dialog, which toggles the page by clicking the button "Next".

The Property Pages dialog box contains both the General Property Page dialog box and the wizard dialog box. It integrates multiple dialogs into one, and toggles the page by tabs or buttons.

Property Page dialog box related classes

When we use the Property Page dialog box, there are two main classes used: The CPropertyPage class and the CPropertySheet class.

1.CPropertyPage class

The CPropertyPage class inherits from the CDialog class, which is used to process a single property page, so create a subclass that inherits from CPropertyPage for each property page. You can find detailed descriptions of the CPropertyPage class and its members in MSDN, VS2010. The following chicken peck Rice will explain some of the main member functions of the CPropertyPage class listed in MSDN.

(1) Constructors

Here are three constructors for the Cproperty class, the function prototypes are:

CPropertyPage ();

Explicit CPropertyPage (
UINT nIDTemplate,
UINT nidcaption = 0,
DWORD dwsize = sizeof (propsheetpage)
);

Explicit CPropertyPage (
LPCTSTR Lpsztemplatename,
UINT nidcaption = 0,
DWORD dwsize = sizeof (propsheetpage)
);

The first is a constructor without any arguments.

In the second constructor, the parameter nidtemplate is the dialog resource ID for the property page, the parameter nidcaption is the ID of the string resource used for the caption of the Property Page dialog Box tab, and if set to 0, the tab caption uses the title of the dialog resource for that property page.

In the third constructor, the parameter lpsztemplatename is the name string of the dialog resource for the property page, and cannot be null. Parameter Nidcaption Ibid.

(2) Canceltoclose () function

After you have made an unrecoverable operation on the properties page of the Modal Property Page dialog box, use the Canceltoclose () function to change the OK button to the Close button and disable the Cancel button. The function prototypes are:

void Canceltoclose ();

(3) setmodified () function

Call this function to activate or disable the "Apply" button, the function prototype is:

void SetModified (BOOL bchanged = TRUE);

(4) Can overload function

The CPropertyPage class provides a number of message-handling functions to respond to various messages in the Property Page dialog box. By overloading these message handlers, we can customize the handling of the Property Page dialog box operations. The message handler functions that can be overloaded include:

OnApply: Handling the message clicked on the "Apply" button of the property page
OnCancel: Processing the message clicked on the "Cancel" button of the property page
OnKillActive: Handles the message that the property page is currently active, often used for data validation
OnOK: Processing the "OK" button of the property page, the "Apply" button, or the message clicked by the "Close" button
OnQueryCancel: Processing a message from the "Cancel" button of a property page before it is clicked
OnReset: Handling the message clicked on the Reset button of the property page
OnSetActive: Processing a property page message that is being toggled to the currently active page
Onwizardback: Handles the message that the "Back" button of the property page clicked, only valid in the wizard dialog box
Onwizardfinish: Handles the message clicked on the "Finish" button of the property page, only valid in the wizard dialog box
Onwizardnext: The message that handles the "next" button of the property page is clicked, only valid in the wizard dialog box

2.CPropertySheet class

The CPropertySheet class inherits from the CWnd class, which is the property sheet class that is responsible for loading, opening, or deleting property pages, and you can toggle property pages in the Property Pages dialog box. It is similar to a dialog box and also has both modal and non-modal types. Below the chicken peck rice on the CPropertySheet class to explain some of the member functions.

(1) Constructors

The three constructors for the CPropertySheet class are still listed here:

CPropertySheet ();

       explicit CPropertySheet (
                uint nidcaption,
                cwnd* pParentWnd = NULL,
                UINT iselectpage = 0 
      );

Explicit CPropertySheet (
LPCTSTR Pszcaption,
cwnd* pParentWnd = NULL,
UINT iselectpage = 0
);

Parameter nidcaption: The ID of the string resource for the caption.

Parameter pParentWnd: The parent window of the Property Pages dialog box, if set to null, the parent window is the main window of the application.

Parameter iselectpage: The initial state, the index of the Active property page, defaults to the first property page added to the property sheet.

Parameter pszcaption: Title string.

(2) Getactiveindex () function

Gets the index of the currently active property page. The function prototypes are:

int Getactiveindex () const;

Return value: The index of the currently active property page.

(3) GetActivePage () function

Gets the currently active property Page object. The function prototypes are:

cpropertypage* getactivepage () const;

Return value: A pointer to the currently active property Page object.

(4) GetPage () function

Gets a property Page object. The function prototypes are:

cpropertypage* getpage (int npage) const;

Parameter npage: The index of the target property page.

Return value: A pointer to the target property Page object.

(5) Getpagecount () function

Gets the number of property pages. The function prototypes are:

int getpagecount () const;

Return value: The number of property pages.

(6) Getpageindex () function

Gets the index of a property page in the Property Pages dialog box. The function prototypes are:

int Getpageindex (cpropertypage* pPage);

Parameter ppage: A pointer to the property Page object to get the index.

Return value: The index of the property Page object in the Property Pages dialog box.

(7) Setactivepage () function

Sets a property page as the Active property page. The function prototypes are:

BOOL Setactivepage (
int Npage
);

BOOL Setactivepage (
cpropertypage* PPage
);

Parameter npage: The index to set as the Active property page.

Parameter ppage: The object pointer to be set as the Active property page.

(8) SetWizardButtons () function

When you enable or disable the back, Next, or Finish buttons on the wizard dialog box, you should call this function before calling DoModal. The function prototypes are:

void SetWizardButtons (
DWORD DwFlags
);

Parameter dwflags: Sets the appearance and feature properties of the wizard button. Can be a combination of the following values:

Pswizb_back enable the Back button and disable the Back button if this value is not included.
Pswizb_next enable the "Next" button and disable the "Next" button if this value is not included.
Pswizb_finish enable the "FINISH" button.
Pswizb_disabledfinish Displays the disabled "Finish" button.

(9) SetWizardMode () function

Setting the Property Pages dialog box for the wizard dialog mode, you should call this function before calling DoModal. The function prototypes are:

void SetWizardMode ();

(Ten) Settitle () function

Sets the caption of the Properties dialog box. The function prototypes are:

void Settitle (
LPCTSTR LpszText,
UINT Nstyle = 0
);

Parameter lpsztext: Title string.

Parameter nstyle: Specifies the style of the property sheet title. should be 0 or psh_proptitle. If set to Psh_proptitle, the word "Properties" appears after the specified title. For example, this invocation of Settitle ("simple", psh_proptitle) causes the property sheet to be titled "Simple Properties".

(one) AddPage () function

Adds a new property page for the Properties dialog box. The function prototypes are:

void AddPage (
CPropertyPage *ppage
);

Parameter ppage: The object pointer to the new property page to add.

() Pressbutton () function

Simulates pressing a specified button. The function prototypes are:

void Pressbutton (
int Nbutton
);

Parameter Nbutton: To simulate a pressed button, it can be one of the following values:

Psbtn_back Select the "Back" button.
Psbtn_next Select the "NEXT" button.
Psbtn_finish Select the "FINISH" button.
PSBTN_OK Select the "OK" button.
Psbtn_applynow Select the "Apply" button.
Psbtn_cancel Select the "CANCEL" button.
PSBTN_HELP Select the Help button.

() Removepage () function

Deletes a property page. The function prototypes are:

void Removepage (
CPropertyPage *ppage
);

void Removepage (
int Npage
);

Parameter ppage: The object pointer to the property page to delete.

Parameter npage: The index of the property page to delete.

Properties dialog box and related two classes Chicken peck rice is introduced here, mainly for the later use of the Property Page dialog box to prepare. There are problems can be to chicken Peck Rice Blog Exchange. Thank you.

Original address: http://www.jizhuomi.com/software/164.html

(reprinted) Introduction to VS2010/MFC Programming 13 (Dialog Box: Property Page dialog box and related classes)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.