Classe CPropertyPage

Rappresenta singole pagine di una finestra delle proprietà, altrimenti nota come finestra di dialogo a schede.

Sintassi

class CPropertyPage : public CDialog

Membri

Costruttori pubblici

Nome Descrizione
CPropertyPage::CPropertyPage Costruisce un oggetto CPropertyPage.

Metodi pubblici

Nome Descrizione
CPropertyPage::CancelToClose Modifica il pulsante OK per leggere Chiudi e disabilita il pulsante Annulla dopo una modifica irreversibile nella pagina di una finestra delle proprietà modale.
CPropertyPage::Construct Costruisce un oggetto CPropertyPage. Usare Construct se si desidera specificare i parametri in fase di esecuzione o se si usano matrici.
CPropertyPage::GetPSP Recupera la struttura di Windows PROPSHEETPAGE associata all'oggetto CPropertyPage .
CPropertyPage::OnApply Chiamato dal framework quando si fa clic sul pulsante Applica ora .
CPropertyPage::OnCancel Chiamato dal framework quando si fa clic sul pulsante Annulla .
CPropertyPage::OnKillActive Chiamato dal framework quando la pagina corrente non è più la pagina attiva. Eseguire la convalida dei dati qui.
CPropertyPage::OnOK Chiamato dal framework quando si fa clic sul pulsante OK, Applica ora o Chiudi .
CPropertyPage::OnQueryCancel Chiamato dal framework quando si fa clic sul pulsante Annulla e prima che venga eseguito l'annullamento.
CPropertyPage::OnReset Chiamato dal framework quando si fa clic sul pulsante Annulla .
CPropertyPage::OnSetActive Chiamato dal framework quando la pagina viene resa attiva.
CPropertyPage::OnWizardBack Chiamato dal framework quando si fa clic sul pulsante Indietro durante l'uso di una finestra delle proprietà di tipo procedura guidata.
CPropertyPage::OnWizardFinish Chiamato dal framework quando si fa clic sul pulsante Fine durante l'uso di una finestra delle proprietà di tipo procedura guidata.
CPropertyPage::OnWizardNext Chiamato dal framework quando si fa clic sul pulsante Avanti durante l'utilizzo di una finestra delle proprietà di tipo procedura guidata.
CPropertyPage::QuerySiblings Inoltra il messaggio a ogni pagina della finestra delle proprietà.
CPropertyPage::SetModified Chiamare per attivare o disattivare il pulsante Applica ora .

Membri dati pubblici

Nome Descrizione
CPropertyPage::m_psp Struttura di Windows PROPSHEETPAGE . Fornisce l'accesso ai parametri della pagina delle proprietà di base.

Osservazioni:

Come per le finestre di dialogo standard, si deriva una classe da CPropertyPage per ogni pagina nella finestra delle proprietà. Per usare CPropertyPagegli oggetti derivati da , creare prima un CPropertySheet oggetto e quindi creare un oggetto per ogni pagina che si trova nella finestra delle proprietà. Chiamare CPropertySheet::AddPage per ogni pagina del foglio e quindi visualizzare la finestra delle proprietà chiamando CPropertySheet::DoModal una finestra delle proprietà modale o CPropertySheet::Create per una finestra delle proprietà non modale.

È possibile creare un tipo di finestra di dialogo di tabulazione denominata procedura guidata, costituita da una finestra delle proprietà con una sequenza di pagine delle proprietà che guidano l'utente nei passaggi di un'operazione, ad esempio la configurazione di un dispositivo o la creazione di una newsletter. In una finestra di dialogo di tipo procedura guidata le pagine delle proprietà non hanno schede e una sola pagina delle proprietà è visibile alla volta. Inoltre, invece di avere i pulsanti OK e Applica ora , una finestra di dialogo di tipo procedura guidata include un pulsante Indietro , un pulsante Avanti o Fine e un pulsante Annulla .

Per altre informazioni sulla creazione di una finestra delle proprietà come procedura guidata, vedere CPropertySheet::SetWizardMode. Per altre informazioni sull'uso di CPropertyPage oggetti, vedere l'articolo Finestre delle proprietà e Pagine delle proprietà.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Requisiti

Intestazione: afxdlgs.h

CPropertyPage::CancelToClose

Chiamare questa funzione dopo che è stata apportata una modifica irreversibile ai dati in una pagina di una finestra delle proprietà modale.

void CancelToClose();

Osservazioni:

Questa funzione modificherà il pulsante OK in Chiudi e disabiliterà il pulsante Annulla . Questa modifica avvisa l'utente che una modifica è permanente e le modifiche non possono essere annullate.

La CancelToClose funzione membro non esegue alcuna operazione in una finestra delle proprietà senza modalità, perché per impostazione predefinita una finestra delle proprietà senza modalità non dispone di un pulsante Annulla .

Esempio

Vedere l'esempio per CPropertyPage::QuerySiblings.

CPropertyPage::Construct

Chiamare questa funzione membro per costruire un CPropertyPage oggetto .

void Construct(
    UINT nIDTemplate,
    UINT nIDCaption = 0);

void Construct(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption = 0);

void Construct(
    UINT nIDTemplate,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0);

void Construct(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0);

Parametri

nIDTemplate
ID del modello usato per questa pagina.

nIDCaption
ID del nome da inserire nella scheda per questa pagina. Se 0, il nome verrà tratto dal modello di finestra di dialogo per questa pagina.

lpszTemplateName
Contiene una stringa con terminazione Null che corrisponde al nome di una risorsa modello.

nIDHeaderTitle
ID del nome da inserire nella posizione del titolo dell'intestazione della pagina delle proprietà. Per impostazione predefinita, 0.

nIDHeaderSubTitle
ID del nome da inserire nella posizione del sottotitolo dell'intestazione della pagina delle proprietà. Per impostazione predefinita, 0.

Osservazioni:

L'oggetto viene visualizzato dopo che vengono soddisfatte tutte le condizioni seguenti:

  • La pagina è stata aggiunta a una finestra delle proprietà utilizzando CPropertySheet::AddPage.

  • La funzione o Create della finestra delle DoModal proprietà è stata chiamata.

  • L'utente ha selezionato (a schede) questa pagina.

Chiamare Construct se non è stato chiamato uno degli altri costruttori di classi. La Construct funzione membro è flessibile perché è possibile lasciare vuota l'istruzione del parametro e quindi specificare più parametri e costruzione in qualsiasi punto del codice.

È necessario usare Construct quando si usano matrici ed è necessario chiamare Construct per ogni membro della matrice in modo che ai membri dati vengano assegnati valori appropriati.

Esempio

// Declare a CPropertySheet object.
CPropertySheet sheet(_T("Simple PropertySheet"));

// Create three CPropertyPage objects whose template IDs are specified
// in rgID array, and add each page to the CPropertySheet object. 
const int c_cPages = 3;
CPropertyPage   pages[c_cPages];
UINT rgID[c_cPages] = { IDD_STYLE, IDD_COLOR, IDD_SHAPE };
for (int i = 0; i < c_cPages; i++)
{
   pages[i].Construct(rgID[i]);
   sheet.AddPage(&pages[i]);
}

// Display a modal CPropertySheet dialog.
sheet.DoModal();

CPropertyPage::CPropertyPage

Costruisce un oggetto CPropertyPage.

CPropertyPage();

explicit CPropertyPage(
    UINT nIDTemplate,
    UINT nIDCaption = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

explicit CPropertyPage(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

CPropertyPage(
    UINT nIDTemplate,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

CPropertyPage(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

Parametri

nIDTemplate
ID del modello usato per questa pagina.

nIDCaption
ID del nome da inserire nella scheda per questa pagina. Se 0, il nome verrà tratto dal modello di finestra di dialogo per questa pagina.

dwSize
lpszTemplateName Punta a una stringa contenente il nome del modello per questa pagina. Non può essere NULL.

nIDHeaderTitle
ID del nome da inserire nella posizione del titolo dell'intestazione della pagina delle proprietà.

nIDHeaderSubTitle
ID del nome da inserire nella posizione del sottotitolo dell'intestazione della pagina delle proprietà.

Osservazioni:

L'oggetto viene visualizzato dopo che vengono soddisfatte tutte le condizioni seguenti:

  • La pagina è stata aggiunta a una finestra delle proprietà utilizzando CPropertySheet::AddPage.

  • La funzione o Create della finestra delle DoModal proprietà è stata chiamata.

  • L'utente ha selezionato (a schede) questa pagina.

Se sono presenti più parametri, ad esempio se si usa una matrice, usare CPropertySheet::Construct anziché CPropertyPage.

Esempio

// Declare a CStylePage object, which is a CPropertyPage-derived class.
CStylePage stylePage;

// Declare a CPropertyPage object with IDD_SHAPE, the ID of the 
// template used for this page. 
CPropertyPage shapePage(IDD_SHAPE);

CPropertyPage::GetPSP

Recupera la struttura di Windows PROPSHEETPAGE associata all'oggetto CPropertyPage .

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Valore restituito

Riferimento alla PROPSHEETPAGE struttura.

CPropertyPage::m_psp

m_psp è una struttura i cui membri archiviano le caratteristiche di PROPSHEETPAGE.

PROPSHEETPAGE m_psp;

Osservazioni:

Utilizzare questa struttura per inizializzare l'aspetto di una pagina delle proprietà dopo la sua costruzione.

Per altre informazioni su questa struttura, incluso un elenco dei relativi membri, vedere PROPSHEETPAGE in Windows SDK.

Esempio

CPropertySheet sheet(_T("Simple PropertySheet"));

// Change the settings of the three pages to enable property sheet's 
// Help button when the page is active.  CStylePage, CShapePage, and 
// CColorPage are CPropertyPage-derived classes.
CStylePage pageStyle;
pageStyle.m_psp.dwFlags |= PSP_HASHELP;

CColorPage pageColor;
pageColor.m_psp.dwFlags |= PSP_HASHELP;

CShapePage pageShape;
pageShape.m_psp.dwFlags |= PSP_HASHELP;

sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);

sheet.SetWizardMode();

sheet.DoModal();

CPropertyPage::OnApply

Questa funzione membro viene chiamata dal framework quando l'utente sceglie OK o il pulsante Applica ora.

virtual BOOL OnApply();

Valore restituito

Diverso da zero se le modifiche vengono accettate; in caso contrario, 0.

Osservazioni:

Quando il framework chiama questa funzione, le modifiche apportate a tutte le pagine delle proprietà nella finestra delle proprietà vengono accettate, la finestra delle proprietà mantiene lo stato attivo e OnApply restituisce TRUE (il valore 1). Prima di OnApply poter essere chiamato dal framework, è necessario chiamare SetModified e impostarne il parametro su TRUE. Verrà attivato il pulsante Applica ora non appena l'utente apporta una modifica nella pagina delle proprietà.

Eseguire l'override di questa funzione membro per specificare l'azione eseguita dal programma quando l'utente seleziona il pulsante Applica ora . Quando si esegue l'override, la funzione deve tornare TRUE ad accettare le modifiche e FALSE impedire l'applicazione delle modifiche.

L'implementazione predefinita di OnApply chiama OnOK.

Per altre informazioni sui messaggi di notifica inviati quando l'utente preme il pulsante Applica ora o OK in una finestra delle proprietà, vedere PSN_APPLY in Windows SDK.

Esempio

Vedere l'esempio per CPropertyPage::OnOK.

CPropertyPage::OnCancel

Questa funzione membro viene chiamata dal framework quando è selezionato il pulsante Annulla .

virtual void OnCancel();

Osservazioni:

Eseguire l'override di questa funzione membro per eseguire le azioni del pulsante Annulla . Il valore predefinito nega tutte le modifiche apportate.

Esempio

// Discard any selection the user made to this page.  The object
// in the view will be painted with the initial color when the
// CPropertySheet dialog is first shown. CColorPage is a 
// CPropertyPage-derived class.
void CColorPage::OnCancel()
{
   // Reset the color saved in the document class.  m_InitialColor
   // is a member variable of CColorPage and it is the color shown 
   // in the view before CPropertySheet is shown.
   // doc->m_Color is the color saved in the document class, and 
   // this is the color to be used by the view class.
   CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetMainWnd();
   CMDIChildWnd* pChild = pFrame->MDIGetActive();
   CPSheetDoc* doc = (CPSheetDoc*)pChild->GetActiveDocument();
   doc->m_Color = m_InitialColor;

   // Tell the view to paint with the initial color.
   CView* view = pChild->GetActiveView();
   view->Invalidate();

   CPropertyPage::OnCancel();
}

// The default MFC implementation of OnReset() would call OnCancel().
void CColorPage::OnReset()
{
   CPropertyPage::OnReset();
}

CPropertyPage::OnKillActive

Questa funzione membro viene chiamata dal framework quando la pagina non è più la pagina attiva.

virtual BOOL OnKillActive();

Valore restituito

Diverso da zero se i dati sono stati aggiornati correttamente; in caso contrario, 0.

Osservazioni:

Eseguire l'override di questa funzione membro per eseguire attività speciali di convalida dei dati.

L'implementazione predefinita di questa funzione membro copia le impostazioni dai controlli nella pagina delle proprietà alle variabili membro della pagina delle proprietà. Se i dati non sono stati aggiornati correttamente a causa di un errore DDV (Dialog Data Validation), la pagina mantiene lo stato attivo.

Al termine della restituzione di questa funzione membro, il framework chiamerà la funzione della OnOK pagina.

Esempio

// Validate the value entered to the "Number" edit control. Its
// value must be at least one. If not, tell the user and set the
// focus to the "Number" edit control. CStylePage is a 
// CPropertyPage-derived class.
BOOL CStylePage::OnKillActive() 
{
   int num = GetDlgItemInt(IDC_NUMOBJECTS);
   if (num <= 0)
   {
      AfxMessageBox(_T("Number of objects must be at least 1."));
      CEdit* edit = (CEdit*) GetDlgItem(IDC_NUMOBJECTS);
      edit->SetFocus();
      edit->SetSel(0, -1);
      return 0;
   }

   return CPropertyPage::OnKillActive();
}

CPropertyPage::OnOK

Questa funzione membro viene chiamata dal framework quando l'utente sceglie OK o il pulsante Applica ora, subito dopo che il framework chiama OnKillActive.

virtual void OnOK();

Osservazioni:

Quando l'utente sceglie OK o il pulsante Applica ora, il framework riceve la PSN_APPLY notifica dalla pagina delle proprietà. La chiamata a OnOK non verrà effettuata se si chiama CPropertySheet::PressButton perché la pagina delle proprietà non invia la notifica in questo caso.

Eseguire l'override di questa funzione membro per implementare un comportamento aggiuntivo specifico della pagina attualmente attiva quando l'utente ignora l'intera finestra delle proprietà.

L'implementazione predefinita di questa funzione membro contrassegna la pagina come "pulita" per riflettere che i dati sono stati aggiornati nella OnKillActive funzione.

Esempio

// Accept the new color selection and dismiss the CPropertySheet
// dialog. The view's object will be painted with the new selected
// color. CColorPage is a CPropertyPage-derived class.
void CColorPage::OnOK() 
{
   // Store the new selected color to a member variable of 
   // document class.  m_Color is a member varible of CColorPage 
   // and it stores the new selected color.  doc->m_Color is 
   // the color saved in the document class and it is the color 
   // used by the view class.
   CMDIFrameWnd* pframe = (CMDIFrameWnd*) AfxGetMainWnd();
   CMDIChildWnd* pchild = pframe->MDIGetActive();
   CPSheetDoc* doc = (CPSheetDoc*) pchild->GetActiveDocument();
   doc->m_Color = m_Color;

   // Tell the view to paint with the new selected color.
   CView* view = pchild->GetActiveView();
   view->Invalidate();
  
   CPropertyPage::OnOK();
}

// The default MFC implementation of OnApply() would call OnOK().
BOOL CColorPage::OnApply() 
{
   return CPropertyPage::OnApply();
}

CPropertyPage::OnQueryCancel

Questa funzione membro viene chiamata dal framework quando l'utente seleziona il pulsante Annulla e prima che venga eseguita l'azione di annullamento.

virtual BOOL OnQueryCancel();

Valore restituito

Restituisce FALSE per impedire l'operazione di annullamento o TRUE per consentirla.

Osservazioni:

Eseguire l'override di questa funzione membro per specificare un'azione eseguita dal programma quando l'utente seleziona il pulsante Annulla .

L'implementazione predefinita di OnQueryCancel restituisce TRUE.

Esempio

// Query the user whether to abort the changes if the new selected
// color (m_Color) is different from the initial color 
// (m_InitialColor) when the CPropertySheet dialog is first shown.
// CColorPage is a CPropertyPage-derived class.
BOOL CColorPage::OnQueryCancel() 
{
   if (m_InitialColor != m_Color)
   {
      if (AfxMessageBox(_T("Abort the changes?"), MB_YESNO) == IDNO)
         return FALSE;  
   }

   return CPropertyPage::OnQueryCancel();
}

CPropertyPage::OnReset

Questa funzione membro viene chiamata dal framework quando l'utente sceglie il pulsante Annulla .

virtual void OnReset();

Osservazioni:

Quando il framework chiama questa funzione, le modifiche a tutte le pagine delle proprietà apportate dall'utente che in precedenza sceglievano il pulsante Applica ora vengono rimosse e la finestra delle proprietà mantiene lo stato attivo.

Eseguire l'override di questa funzione membro per specificare l'azione eseguita dal programma quando l'utente seleziona il pulsante Annulla .

L'implementazione predefinita di OnReset non esegue alcuna operazione.

Esempio

Vedere l'esempio per CPropertyPage::OnCancel.

CPropertyPage::OnSetActive

Questa funzione membro viene chiamata dal framework quando la pagina viene scelta dall'utente e diventa la pagina attiva.

virtual BOOL OnSetActive();

Valore restituito

Diverso da zero se la pagina è stata impostata correttamente; in caso contrario, 0.

Osservazioni:

Eseguire l'override di questa funzione membro per eseguire attività quando viene attivata una pagina. L'override di questa funzione membro in genere chiamerebbe la versione predefinita dopo l'aggiornamento dei membri dati per consentire l'aggiornamento dei controlli pagina con i nuovi dati.

L'implementazione predefinita crea la finestra per la pagina, se non creata in precedenza, e lo rende la pagina attiva.

Esempio

Vedere l'esempio per CPropertySheet::SetFinishText.

CPropertyPage::OnWizardBack

Questa funzione membro viene chiamata dal framework quando l'utente seleziona il pulsante Indietro in una procedura guidata.

virtual LRESULT OnWizardBack();

Valore restituito

0 per passare automaticamente alla pagina successiva; -1 per impedire la modifica della pagina. Per passare a una pagina diversa da quella successiva, restituire l'identificatore della finestra di dialogo da visualizzare.

Osservazioni:

Eseguire l'override di questa funzione membro per specificare un'azione che l'utente deve eseguire quando viene premuto il pulsante Indietro .

Per altre informazioni su come creare una finestra delle proprietà di tipo procedura guidata, vedere CPropertySheet::SetWizardMode.

Esempio

// The Back button is selected from the propertysheet.  Get the selected 
// radio button of the page by looping through all buttons on the 
// pages.  m_radioColor is a member variable of 
// CColorPage (a CPropertyPage-derived class).  Its initial value 
// is initialized in OnInitDialog().
LRESULT CColorPage::OnWizardBack()
{
   for (int id = IDC_RADIOBLACK; id <= IDC_RADIOGREEN; id++)
   {
      CButton* button = (CButton*)GetDlgItem(id);
      if (button->GetCheck() == 1)
      {
         m_radioColor = id - IDC_RADIOBLACK;
         break;
      }
   }

   return CPropertyPage::OnWizardBack();
}

CPropertyPage::OnWizardFinish

Questa funzione membro viene chiamata dal framework quando l'utente seleziona il pulsante Fine in una procedura guidata.

virtual BOOL OnWizardFinish();

Valore restituito

Diverso da zero se la finestra delle proprietà viene eliminata definitivamente al termine della procedura guidata; in caso contrario, zero.

Osservazioni:

Quando un utente seleziona il pulsante Fine in una procedura guidata, il framework chiama questa funzione; quando OnWizardFinish restituisce TRUE (un valore diverso da zero), la finestra delle proprietà può essere eliminata definitivamente (ma non viene effettivamente eliminata definitivamente). Chiamare DestroyWindow per eliminare definitivamente la finestra delle proprietà. Non chiamare DestroyWindow da OnWizardFinish. In questo modo si verificherà un danneggiamento dell'heap o altri errori.

È possibile eseguire l'override di questa funzione membro per specificare un'azione che l'utente deve eseguire quando viene premuto il pulsante Fine . Quando si esegue l'override di questa funzione, tornare FALSE per impedire che la finestra delle proprietà venga eliminata definitivamente.

Per altre informazioni sui messaggi di notifica inviati quando l'utente preme il pulsante Fine in una finestra delle proprietà della procedura guidata, vedere PSN_WIZFINISH in Windows SDK.

Per altre informazioni su come creare una finestra delle proprietà di tipo procedura guidata, vedere CPropertySheet::SetWizardMode.

Esempio

// Inform users regarding the selections they have made by 
// navigating the pages in propertysheet.
BOOL CShapePage::OnWizardFinish()
{
   CString report = _T("You have selected the following options:\n");

   // Get the number of property pages from CPropertySheet.
   CPropertySheet* sheet = (CPropertySheet*)GetParent();
   int count = sheet->GetPageCount();

   // Get the formatted string from each page. This formatted string 
   // will be shown in a message box. Each page knows about the 
   // string to be displayed. For simplicity, we derive a class 
   // from CPropertyPage called CMyPropertyPage. CMyPropertyPage 
   // has a pure virtual member function called GetPageSelections().
   // All pages in the property sheet must be derived from 
   // CMyPropertyPage so we loop through each page to get the 
   // formatted string by calling the GetPageSelections() function.
   for (int i = 0; i < count; i++)
   {
      CMyPropertyPage* page = (CMyPropertyPage*)sheet->GetPage(i);

      CString str;
      page->GetPageSelections(str);
      report += _T("\n") + str;
   }

   AfxMessageBox(report);

   return CPropertyPage::OnWizardFinish();
}

 

// An example of implementing the GetPageSelections() for CStylePage.
// CStylePage is a CMyPropertyPage-derived class, which in turn is a 
// CPropertyPage-derived class.
void CStylePage::GetPageSelections(CString& str)
{
   str.Format(_T("Number of objects to be created = %d"), m_NumObjects);
}

 

// An example of implementing the GetPageSelections() for CColorPage.
// CColorPage is a CMyPropertyPage-derived class, which in turn is a 
// CPropertyPage-derived class.
void CColorPage::GetPageSelections(CString& str)
{
   str = _T("Color selected is ");
   switch (m_Color)
   {
   case RGB(0, 0, 0):
      str += _T("Black");
      break;

   case RGB(255, 0, 0):
      str += _T("Red");
      break;

   case RGB(0, 255, 0):
      str += _T("Green");
      break;

   case RGB(0, 0, 255):
      str += _T("Blue");
      break;

   default:
      str += _T("Custom");
      break;
   }
}

 

// An example of implementing the GetPageSelections() for CShapePage.
// CShapePage is a CMyPropertyPage-derived class, which in turn is a 
// CPropertyPage-derived class.
void CShapePage::GetPageSelections(CString& str)
{
   CString shapename;
   switch (m_Selection)
   {
   case IDC_RECTANGLE:
      shapename = _T("Rectangle");
      break;

   case IDC_ROUND_RECTANGLE:
      shapename = _T("Round Rectangle");
      break;

   case IDC_ELLIPSE:
      shapename = _T("Ellipse");
      break;
   }

   str.Format(_T("Shape to be created is %s"), shapename);
}

CPropertyPage::OnWizardNext

Questa funzione membro viene chiamata dal framework quando l'utente seleziona il pulsante Avanti in una procedura guidata.

virtual LRESULT OnWizardNext();

Valore restituito

0 per passare automaticamente alla pagina successiva; -1 per impedire la modifica della pagina. Per passare a una pagina diversa da quella successiva, restituire l'identificatore della finestra di dialogo da visualizzare.

Osservazioni:

Eseguire l'override di questa funzione membro per specificare un'azione che l'utente deve eseguire quando viene premuto il pulsante Avanti .

Per altre informazioni su come creare una finestra delle proprietà di tipo procedura guidata, vedere CPropertySheet::SetWizardMode.

Esempio

// The Next button is selected from the propertysheet. Show the 
// second page of the propertysheet ONLY if a non-zero value is 
// entered to the Number edit control of the CStylePage. Otherwise
// display a message to the user and stay on the current page.

LRESULT CStylePage::OnWizardNext()
{
   // Get the number from the edit control
   int num = GetDlgItemInt(IDC_NUMOBJECTS);

   if (num == 0)
   {
      // Display a message to the user
      AfxMessageBox(_T("Supply a non-zero number on the edit control"), MB_OK);

      // Stay on the current page
      return -1;
   }

   // CPropertyPage::OnWizardNext returns zero and causes
   // the property sheet to display the next page
   return CPropertyPage::OnWizardNext();
}

CPropertyPage::QuerySiblings

Chiamare questa funzione membro per inoltrare un messaggio a ogni pagina nella finestra delle proprietà.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Parametri

wParam
Specifica informazioni aggiuntive dipendenti dai messaggi.

lParam
Specifica informazioni aggiuntive dipendenti dai messaggi

Valore restituito

Valore diverso da zero di una pagina nella finestra delle proprietà oppure 0 se tutte le pagine restituiscono un valore pari a 0.

Osservazioni:

Se una pagina restituisce un valore diverso da zero, la finestra delle proprietà non invia il messaggio alle pagine successive.

Esempio

// Validate the value entered in the Number edit control. If its 
// value is not a natural number, request CPropertySheet (i.e. parent
// window of the page) to send a PSM_QUERYSIBLINGS message to each
// LOADED page (a page won't be loaded in memory until it is shown).
// If one of the pages returns a nonzero value in response to the 
// PSM_QUERYSIBLINGS message, then inform the user and change the OK
// to Close and disable the Cancel button. CStylePage is a 
// CPropertyPage-derived class.
BOOL CStylePage::OnApply()
{
   int num = GetDlgItemInt(IDC_NUMOBJECTS);
   if (num <= 0)
   {
      if (QuerySiblings(num, 0L))
      {
         AfxMessageBox(_T("Invalid data is entered.  Choose Close ")
            _T("button to close the dialog."));
         CancelToClose();
      }
   }

   return CPropertyPage::OnApply();
}

 

// This is an example of trapping the PSM_QUERYSIBLINGS in one of
// the pages. CColorPage is a CPropertyPage-derived class.  Upon 
// receiving this message, wParam contains the value passed to 
// QuerySiblings() call. CColorPage will check this value and return
// FALSE only if the value is greater than 1.
ON_MESSAGE(PSM_QUERYSIBLINGS, &CColorPage::OnQuerySiblings)

 

LRESULT CColorPage::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
   UNREFERENCED_PARAMETER(lParam);
   return (wParam <= 0);
}

CPropertyPage::SetModified

Chiamare questa funzione membro per abilitare o disabilitare il pulsante Applica ora , in base al fatto che le impostazioni nella pagina delle proprietà debbano essere applicate all'oggetto esterno appropriato.

void SetModified(BOOL bChanged = TRUE);

Parametri

bChanged
TRUE per indicare che le impostazioni della pagina delle proprietà sono state modificate dopo l'ultima applicazione; FALSE per indicare che le impostazioni della pagina delle proprietà sono state applicate o devono essere ignorate.

Osservazioni:

Il framework tiene traccia delle pagine "dirty", ovvero le pagine delle proprietà per le quali è stato chiamato SetModified( TRUE ). Il pulsante Applica ora verrà sempre abilitato se si chiama SetModified( TRUE ) per una delle pagine. Il pulsante Applica ora verrà disabilitato quando chiami SetModified( FALSE ) una delle pagine, ma solo se nessuna delle altre pagine è "dirty".

Esempio

// OnColorClicked() is a member function of CColorPage (a
// CPropertyPage-derived class). It is called whenever a radio button
// is selected on the page. Call SetModified() to enable the Apply 
// button whenever a new selection is made. m_Color is a member
// variable of CColorPage and it is to store the selected RGB color.
// Its entry in the message map looks like this:
// ON_CONTROL_RANGE(BN_CLICKED, IDC_BLACK, IDC_GREEN, CColorPage::OnColorClicked)
void CColorPage::OnColorClicked(UINT nCmdID)
{
   COLORREF color = m_Color;
   switch (nCmdID)
   {
   case IDC_RADIOBLACK:
      color = RGB(0, 0, 0);
      m_radioColor = crBlack;
      break;

   case IDC_RADIORED:
      color = RGB(255, 0, 0);
      m_radioColor = crRed;
      break;

   case IDC_RADIOGREEN:
      color = RGB(0, 255, 0);
      m_radioColor = crGreen;
      break;

   case IDC_RADIOBLUE:
      color = RGB(0, 0, 255);
      m_radioColor = crBlue;
      break;
   }

   if (color != m_Color)
   {
      m_Color = color;
      SetModified();    // Enable Apply Now button.
   }

   UpdateData(FALSE);
}

Vedi anche

Esempio MFC CMNCTRL1
Esempio MFC CMNCTRL2
Esempio MFC PROPDLG
Esempio MFC SNAPVW
CDialog Classe
Grafico della gerarchia
CPropertySheet Classe