Udostępnij za pośrednictwem


CPropertyPage Klasa

Reprezentuje poszczególne strony arkusza właściwości, inaczej znane jako okno dialogowe karty.

Składnia

class CPropertyPage : public CDialog

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CPropertyPage::CPropertyPage CPropertyPage Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CPropertyPage::CancelToClose Zmienia przycisk OK w celu odczytu Zamknij i wyłącza przycisk Anuluj po nieodwracalnej zmianie na stronie modalnego arkusza właściwości.
CPropertyPage::Construct CPropertyPage Tworzy obiekt. Użyj Construct polecenia , jeśli chcesz określić parametry w czasie wykonywania lub jeśli używasz tablic.
CPropertyPage::GetPSP Pobiera strukturę systemu Windows PROPSHEETPAGE skojarzona z obiektem CPropertyPage .
CPropertyPage::OnApply Wywoływana przez strukturę po kliknięciu przycisku Zastosuj teraz .
CPropertyPage::OnCancel Wywoływana przez platformę po kliknięciu przycisku Anuluj .
CPropertyPage::OnKillActive Wywoływana przez platformę, gdy bieżąca strona nie jest już aktywną stroną. W tym miejscu przeprowadź walidację danych.
CPropertyPage::OnOK Wywoływana przez platformę po kliknięciu przycisku OK, Zastosuj teraz lub Zamknij .
CPropertyPage::OnQueryCancel Wywoływana przez platformę po kliknięciu przycisku Anuluj i przed anulowaniem.
CPropertyPage::OnReset Wywoływana przez platformę po kliknięciu przycisku Anuluj .
CPropertyPage::OnSetActive Wywoływana przez platformę, gdy strona jest aktywna.
CPropertyPage::OnWizardBack Wywoływana przez platformę po kliknięciu przycisku Wstecz podczas korzystania z arkusza właściwości typu kreatora.
CPropertyPage::OnWizardFinish Wywoływana przez platformę po kliknięciu przycisku Zakończ podczas korzystania z arkusza właściwości typu kreatora.
CPropertyPage::OnWizardNext Wywoływana przez platformę po kliknięciu przycisku Dalej podczas korzystania z arkusza właściwości typu kreatora.
CPropertyPage::QuerySiblings Przekazuje komunikat do każdej strony arkusza właściwości.
CPropertyPage::SetModified Wywołaj polecenie , aby aktywować lub dezaktywować przycisk Zastosuj teraz .

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CPropertyPage::m_psp Struktura systemu Windows PROPSHEETPAGE . Zapewnia dostęp do podstawowych parametrów strony właściwości.

Uwagi

Podobnie jak w przypadku standardowych okien dialogowych, należy utworzyć klasę dla CPropertyPage każdej strony w arkuszu właściwości. Aby użyć CPropertyPageobiektów pochodnych, najpierw utwórz CPropertySheet obiekt, a następnie utwórz obiekt dla każdej strony, która znajduje się w arkuszu właściwości. Wywołaj CPropertySheet::AddPage wywołanie każdej strony w arkuszu, a następnie wyświetl arkusz właściwości, wywołując CPropertySheet::DoModal arkusz właściwości modalnych lub CPropertySheet::Create dla arkusza właściwości bez moderowania.

Można utworzyć typ okna dialogowego karty o nazwie kreator, który składa się z arkusza właściwości z sekwencją stron właściwości, które prowadzą użytkownika przez kroki operacji, takie jak konfigurowanie urządzenia lub tworzenie biuletynu. W oknie dialogowym karty typu kreatora strony właściwości nie mają kart i tylko jedna strona właściwości jest widoczna naraz. Ponadto zamiast przycisków OK i Zastosuj teraz , okno dialogowe karty typu kreatora ma przycisk Wstecz , przycisk Dalej lub Zakończ oraz przycisk Anuluj .

Aby uzyskać więcej informacji na temat ustanawiania arkusza właściwości jako kreatora, zobacz CPropertySheet::SetWizardMode. Aby uzyskać więcej informacji na temat korzystania z CPropertyPage obiektów, zobacz artykuł Arkusze właściwości i strony właściwości.

Hierarchia dziedziczenia

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Wymagania

Nagłówek: afxdlgs.h

CPropertyPage::CancelToClose

Wywołaj tę funkcję po wprowadzeniu nieodwracalnej zmiany danych na stronie modalnego arkusza właściwości.

void CancelToClose();

Uwagi

Ta funkcja zmieni przycisk OK na Zamknij i wyłączy przycisk Anuluj. Ta zmiana ostrzega użytkownika, że zmiana jest trwała, a modyfikacje nie mogą zostać anulowane.

Funkcja CancelToClose składowa nie wykonuje nic w arkuszu właściwości bez moderowania, ponieważ domyślnie nie ma przycisku Anuluj .

Przykład

Zobacz przykład CPropertyPage::QuerySiblings.

CPropertyPage::Construct

Wywołaj tę funkcję składową CPropertyPage , aby utworzyć obiekt.

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

Parametry

nIDTemplate
Identyfikator szablonu używanego dla tej strony.

nIDCaption
Identyfikator nazwy, która ma zostać umieszczona na karcie dla tej strony. Jeśli wartość 0, nazwa zostanie pobrana z szablonu okna dialogowego dla tej strony.

lpszTemplateName
Zawiera ciąg zakończony o wartości null, który jest nazwą zasobu szablonu.

nIDHeaderTitle
Identyfikator nazwy, która ma zostać umieszczona w lokalizacji tytułu nagłówka strony właściwości. Domyślnie 0.

nIDHeaderSubTitle
Identyfikator nazwy, która ma zostać umieszczona w lokalizacji podtytułu nagłówka strony właściwości. Domyślnie 0.

Uwagi

Obiekt jest wyświetlany po spełnieniu wszystkich następujących warunków:

  • Strona została dodana do arkusza właściwości przy użyciu polecenia CPropertySheet::AddPage.

  • Wywołano funkcję lub Create arkusz DoModal właściwości.

  • Użytkownik wybrał (kartę) na tej stronie.

Wywołaj metodę Construct , jeśli jeden z innych konstruktorów klas nie został wywołany. Funkcja składowa jest elastyczna Construct , ponieważ można pozostawić instrukcję parametru pustą, a następnie określić wiele parametrów i konstrukcji w dowolnym momencie w kodzie.

Należy użyć Construct podczas pracy z tablicami i należy wywołać Construct dla każdego elementu członkowskiego tablicy, aby członkowie danych przypisyli odpowiednie wartości.

Przykład

// 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

CPropertyPage Tworzy obiekt.

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

Parametry

nIDTemplate
Identyfikator szablonu używanego dla tej strony.

nIDCaption
Identyfikator nazwy, która ma zostać umieszczona na karcie dla tej strony. Jeśli wartość 0, nazwa zostanie pobrana z szablonu okna dialogowego dla tej strony.

dwSize
lpszTemplateName Wskazuje ciąg zawierający nazwę szablonu dla tej strony. Nie można mieć .NULL

nIDHeaderTitle
Identyfikator nazwy, która ma zostać umieszczona w lokalizacji tytułu nagłówka strony właściwości.

nIDHeaderSubTitle
Identyfikator nazwy, która ma zostać umieszczona w lokalizacji podtytułu nagłówka strony właściwości.

Uwagi

Obiekt jest wyświetlany po spełnieniu wszystkich następujących warunków:

  • Strona została dodana do arkusza właściwości przy użyciu polecenia CPropertySheet::AddPage.

  • Wywołano funkcję lub Create arkusz DoModal właściwości.

  • Użytkownik wybrał (kartę) na tej stronie.

Jeśli masz wiele parametrów (na przykład jeśli używasz tablicy), użyj zamiast CPropertyPage.CPropertySheet::Construct

Przykład

// 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

Pobiera strukturę systemu Windows PROPSHEETPAGE skojarzona z obiektem CPropertyPage .

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Wartość zwracana

Odwołanie do PROPSHEETPAGE struktury.

CPropertyPage::m_psp

m_pspjest strukturą, której składowe przechowują cechy .PROPSHEETPAGE

PROPSHEETPAGE m_psp;

Uwagi

Użyj tej struktury, aby zainicjować wygląd strony właściwości po jej utworzeniu.

Aby uzyskać więcej informacji na temat tej struktury, w tym listy jej członków, zobacz PROPSHEETPAGE w zestawie Windows SDK.

Przykład

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

Ta funkcja składowa jest wywoływana przez platformę, gdy użytkownik wybierze przycisk OK lub Zastosuj teraz.

virtual BOOL OnApply();

Wartość zwracana

Niezerowe, jeśli zmiany są akceptowane; w przeciwnym razie 0.

Uwagi

Gdy struktura wywołuje tę funkcję, zmiany wprowadzone na wszystkich stronach właściwości w arkuszu właściwości są akceptowane, arkusz właściwości zachowuje fokus i OnApply zwraca TRUE (wartość 1). Aby OnApply można było wywołać strukturę, należy wywołać SetModified metodę i ustawić jej parametr na TRUE. Spowoduje to aktywowanie przycisku Zastosuj teraz , gdy tylko użytkownik dokona zmiany na stronie właściwości.

Zastąpi tę funkcję składową, aby określić, jaką akcję podejmuje program, gdy użytkownik wybierze przycisk Zastosuj teraz . Podczas zastępowania funkcja powinna wrócić TRUE , aby zaakceptować zmiany i FALSE zapobiec wprowadzeniu zmian.

Domyślna implementacja wywołań OnApply OnOK.

Aby uzyskać więcej informacji na temat komunikatów powiadomień wysyłanych po naciśnięciu przycisku Zastosuj teraz lub OK w arkuszu właściwości, zobacz PSN_APPLY w zestawie SDK systemu Windows.

Przykład

Zobacz przykład CPropertyPage ::OnOK.

CPropertyPage::OnCancel

Ta funkcja składowa jest wywoływana przez platformę po wybraniu przycisku Anuluj .

virtual void OnCancel();

Uwagi

Zastąpij tę funkcję składową, aby wykonać akcje przycisku Anuluj . Wartość domyślna neguje wszelkie wprowadzone zmiany.

Przykład

// 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

Ta funkcja składowa jest wywoływana przez platformę, gdy strona nie jest już aktywną stroną.

virtual BOOL OnKillActive();

Wartość zwracana

Niezero, jeśli dane zostały pomyślnie zaktualizowane, w przeciwnym razie 0.

Uwagi

Zastąpij tę funkcję składową, aby wykonywać specjalne zadania weryfikacji danych.

Domyślna implementacja tej funkcji składowej kopiuje ustawienia z kontrolek na stronie właściwości do zmiennych członkowskich strony właściwości. Jeśli dane nie zostały pomyślnie zaktualizowane z powodu błędu weryfikacji danych okna dialogowego (DDV), strona zachowuje fokus.

Po pomyślnym powrocie tej funkcji składowej struktura wywoła funkcję strony OnOK .

Przykład

// 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

Ta funkcja składowa jest wywoływana przez platformę, gdy użytkownik wybierze przycisk OK lub Zastosuj teraz bezpośrednio po wywołaniu OnKillActivestruktury .

virtual void OnOK();

Uwagi

Gdy użytkownik wybierze przycisk OK lub przycisk Zastosuj teraz, platforma otrzyma PSN_APPLY powiadomienie ze strony właściwości. Wywołanie polecenia nie zostanie wykonane, jeśli wywołasz CPropertySheet::PressButton wywołanieOnOK, ponieważ strona właściwości nie wyśle powiadomienia w takim przypadku.

Zastąpi tę funkcję składową, aby zaimplementować dodatkowe zachowanie specyficzne dla aktualnie aktywnej strony, gdy użytkownik odrzuci cały arkusz właściwości.

Domyślna implementacja tej funkcji składowej oznacza stronę jako "czystą", aby odzwierciedlić, że dane zostały zaktualizowane w OnKillActive funkcji.

Przykład

// 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

Ta funkcja składowa jest wywoływana przez platformę, gdy użytkownik wybierze przycisk Anuluj i przed podjęciem akcji anulowania.

virtual BOOL OnQueryCancel();

Wartość zwracana

Zwraca polecenie FALSE , aby uniemożliwić operację anulowania lub TRUE zezwolić na nie.

Uwagi

Zastąpi tę funkcję składową, aby określić akcję wykonywaną przez program, gdy użytkownik wybierze przycisk Anuluj .

Domyślna implementacja OnQueryCancel zwraca wartość TRUE.

Przykład

// 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

Ta funkcja składowa jest wywoływana przez platformę, gdy użytkownik wybierze przycisk Anuluj .

virtual void OnReset();

Uwagi

Gdy struktura wywołuje tę funkcję, zmienia się na wszystkie strony właściwości wprowadzone wcześniej przez użytkownika wybierającego przycisk Zastosuj teraz są odrzucane, a arkusz właściwości zachowuje fokus.

Zastąpi tę funkcję składową, aby określić, jaką akcję podejmuje program, gdy użytkownik wybierze przycisk Anuluj .

Domyślna implementacja OnReset nic nie robi.

Przykład

Zobacz przykład CPropertyPage ::OnCancel.

CPropertyPage::OnSetActive

Ta funkcja składowa jest wywoływana przez platformę, gdy strona jest wybierana przez użytkownika i staje się aktywną stroną.

virtual BOOL OnSetActive();

Wartość zwracana

Niezerowe, jeśli strona została pomyślnie ustawiona jako aktywna; w przeciwnym razie 0.

Uwagi

Zastąpi tę funkcję składową, aby wykonywać zadania po aktywowaniu strony. Zastąpienie tej funkcji składowej zwykle wywołuje domyślną wersję po zaktualizowaniu elementów członkowskich danych, aby umożliwić jej aktualizowanie kontrolek strony przy użyciu nowych danych.

Domyślna implementacja tworzy okno dla strony, jeśli nie zostało wcześniej utworzone i sprawia, że jest to aktywna strona.

Przykład

Zobacz przykład CPropertySheet::SetFinishText.

CPropertyPage::OnWizardBack

Ta funkcja składowa jest wywoływana przez platformę, gdy użytkownik wybierze przycisk Wstecz w kreatorze.

virtual LRESULT OnWizardBack();

Wartość zwracana

0, aby automatycznie przejść do następnej strony; -1, aby zapobiec zmianie strony. Aby przejść do strony innej niż następna, zwróć identyfikator okna dialogowego do wyświetlenia.

Uwagi

Zastąpi tę funkcję składową, aby określić akcję, która użytkownik musi wykonać po naciśnięciu przycisku Wstecz .

Aby uzyskać więcej informacji na temat tworzenia arkusza właściwości typu kreatora, zobacz CPropertySheet::SetWizardMode.

Przykład

// 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

Ta funkcja składowa jest wywoływana przez platformę, gdy użytkownik wybierze przycisk Zakończ w kreatorze.

virtual BOOL OnWizardFinish();

Wartość zwracana

Niezero, jeśli arkusz właściwości zostanie zniszczony po zakończeniu działania kreatora; w przeciwnym razie zero.

Uwagi

Gdy użytkownik wybierze przycisk Zakończ w kreatorze, platforma wywołuje tę funkcję. Gdy OnWizardFinish zwraca TRUE wartość (wartość niezerowa), arkusz właściwości będzie mógł zostać zniszczony (ale nie zostanie faktycznie zniszczony). Wywołanie DestroyWindow metody w celu zniszczenia arkusza właściwości. Nie dzwonij DestroyWindow z OnWizardFinishadresu ; spowoduje to uszkodzenie stert lub inne błędy.

Tę funkcję składową można zastąpić, aby określić akcję, którą użytkownik musi wykonać po naciśnięciu przycisku Zakończ . Podczas zastępowania tej funkcji wróć FALSE , aby zapobiec niszczeniu arkusza właściwości.

Aby uzyskać więcej informacji na temat komunikatów powiadomień wysyłanych po naciśnięciu przycisku Zakończ w arkuszu właściwości kreatora, zobacz PSN_WIZFINISH w zestawie WINDOWS SDK.

Aby uzyskać więcej informacji na temat tworzenia arkusza właściwości typu kreatora, zobacz CPropertySheet::SetWizardMode.

Przykład

// 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

Ta funkcja składowa jest wywoływana przez platformę, gdy użytkownik wybierze przycisk Dalej w kreatorze.

virtual LRESULT OnWizardNext();

Wartość zwracana

0, aby automatycznie przejść do następnej strony; -1, aby zapobiec zmianie strony. Aby przejść do strony innej niż następna, zwróć identyfikator okna dialogowego do wyświetlenia.

Uwagi

Zastąpi tę funkcję składową, aby określić akcję, która użytkownik musi wykonać po naciśnięciu przycisku Dalej .

Aby uzyskać więcej informacji na temat tworzenia arkusza właściwości typu kreatora, zobacz CPropertySheet::SetWizardMode.

Przykład

// 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

Wywołaj tę funkcję składową, aby przekazać komunikat do każdej strony w arkuszu właściwości.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Parametry

wParam
Określa dodatkowe informacje zależne od komunikatów.

lParam
Określa dodatkowe informacje zależne od komunikatów

Wartość zwracana

Wartość niezerowa ze strony w arkuszu właściwości lub 0, jeśli wszystkie strony zwracają wartość 0.

Uwagi

Jeśli strona zwraca wartość niezerową, arkusz właściwości nie wysyła komunikatu do kolejnych stron.

Przykład

// 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

Wywołaj tę funkcję składową, aby włączyć lub wyłączyć przycisk Zastosuj teraz , na podstawie tego, czy ustawienia na stronie właściwości powinny być stosowane do odpowiedniego obiektu zewnętrznego.

void SetModified(BOOL bChanged = TRUE);

Parametry

bChanged
TRUE aby wskazać, że ustawienia strony właściwości zostały zmodyfikowane od czasu ostatniej ich stosowania; FALSE aby wskazać, że ustawienia strony właściwości zostały zastosowane lub powinny być ignorowane.

Uwagi

Struktura śledzi, które strony są "brudne", czyli strony właściwości, dla których nazwano SetModified( TRUE ). Przycisk Zastosuj teraz będzie zawsze włączony, jeśli wywołasz SetModified( TRUE ) jedną ze stron. Przycisk Zastosuj teraz zostanie wyłączony po wywołaniu SetModified( FALSE ) jednej ze stron, ale tylko wtedy, gdy żadna z pozostałych stron nie jest "zanieczyszczona".

Przykład

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

Zobacz też

Przykład MFC CMNCTRL1
Przykład MFC CMNCTRL2
Przykład MFC PROPDLG
Przykład MFC SNAPVW
CDialog Klasa
Wykres hierarchii
CPropertySheet Klasa