Aracılığıyla paylaş


CPropertyPage Sınıf

Bir özellik sayfasının tek tek sayfalarını temsil eder; aksi halde sekme iletişim kutusu olarak bilinir.

Sözdizimi

class CPropertyPage : public CDialog

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CPropertyPage::CPropertyPage Bir CPropertyPage nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CPropertyPage::CancelToClose Tamam düğmesini Kapat'ı okuyacak şekilde değiştirir ve kalıcı özellik sayfasının sayfasında kurtarılamaz bir değişiklik yaptıktan sonra İptal düğmesini devre dışı bırakır.
CPropertyPage::Construct Bir CPropertyPage nesne oluşturur. Parametrelerinizi çalışma zamanında belirtmek istiyorsanız veya diziler kullanıyorsanız kullanın Construct .
CPropertyPage::GetPSP Nesneyle CPropertyPage ilişkili Windows PROPSHEETPAGE yapısını alır.
CPropertyPage::OnApply Şimdi Uygula düğmesine tıklandığında çerçeve tarafından çağrılır.
CPropertyPage::OnCancel İptal düğmesine tıklandığında çerçeve tarafından çağrılır.
CPropertyPage::OnKillActive Geçerli sayfa artık etkin sayfa olmadığında çerçeve tarafından çağrılır. Burada veri doğrulama gerçekleştirin.
CPropertyPage::OnOK Tamam, Şimdi Uygula veya Kapat düğmesine tıklandığında çerçeve tarafından çağrılır.
CPropertyPage::OnQueryCancel İptal düğmesine tıklandığında ve iptal gerçekleşmeden önce çerçeve tarafından çağrılır.
CPropertyPage::OnReset İptal düğmesine tıklandığında çerçeve tarafından çağrılır.
CPropertyPage::OnSetActive Sayfa etkin sayfa haline getirildiğinde çerçeve tarafından çağrılır.
CPropertyPage::OnWizardBack Sihirbaz türü özellik sayfası kullanılırken Geri düğmesine tıklandığında çerçeve tarafından çağrılır.
CPropertyPage::OnWizardFinish Sihirbaz türü özellik sayfası kullanılırken Son düğmesine tıklandığında çerçeve tarafından çağrılır.
CPropertyPage::OnWizardNext Sihirbaz türü özellik sayfası kullanılırken İleri düğmesine tıklandığında çerçeve tarafından çağrılır.
CPropertyPage::QuerySiblings İletiyi özellik sayfasının her sayfasına iletir.
CPropertyPage::SetModified Şimdi Uygula düğmesini etkinleştirmek veya devre dışı bırakmak için arayın.

Ortak Veri Üyeleri

Veri Akışı Adı Açıklama
CPropertyPage::m_psp Windows PROPSHEETPAGE yapısı. Temel özellik sayfası parametrelerine erişim sağlar.

Açıklamalar

Standart iletişim kutularında olduğu gibi, özellik sayfanızdaki her sayfa için öğesinden CPropertyPage bir sınıf türetirsiniz. Türetilmiş nesneleri kullanmak CPropertyPageiçin önce bir CPropertySheet nesne oluşturun ve ardından özellik sayfasına giden her sayfa için bir nesne oluşturun. Sayfadaki her sayfa için çağrısı CPropertySheet::AddPage yapın ve ardından kalıcı özellik sayfası veya CPropertySheet::Create modsuz özellik sayfası için çağırarak CPropertySheet::DoModal özellik sayfasını görüntüleyin.

Bir cihaz ayarlama veya bülten oluşturma gibi bir işlemin adımları boyunca kullanıcıya yol gösteren özellik sayfaları dizisine sahip bir özellik sayfasından oluşan, sihirbaz olarak adlandırılan bir sekme iletişim kutusu türü oluşturabilirsiniz. Sihirbaz türündeki sekme iletişim kutusunda özellik sayfalarında sekmeler yoktur ve aynı anda yalnızca bir özellik sayfası görünür. Ayrıca, Tamam ve Şimdi Uygula düğmeleri yerine, sihirbaz türündeki bir sekme iletişim kutusunda Geri düğmesi, İleri veya Son düğmesi ve İptal düğmesi bulunur.

Özellik sayfasını sihirbaz olarak oluşturma hakkında daha fazla bilgi için bkz CPropertySheet::SetWizardMode. . Nesneleri kullanma CPropertyPage hakkında daha fazla bilgi için Özellik Sayfaları ve Özellik Sayfaları makalesine bakın.

Devralma Hiyerarşisi

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Gereksinimler

Üstbilgi: afxdlgs.h

CPropertyPage::CancelToClose

Kalıcı özellik sayfasının bir sayfasındaki verilerde kurtarılamaz bir değişiklik yapıldıktan sonra bu işlevi çağırın.

void CancelToClose();

Açıklamalar

Bu işlev Tamam düğmesini Kapat olarak değiştirir ve İptal düğmesini devre dışı bırakır. Bu değişiklik, kullanıcıyı bir değişikliğin kalıcı olduğu ve değişikliklerin iptal edilemeceği konusunda uyarır.

Modeless CancelToClose özellik sayfasında varsayılan olarak İptal düğmesi olmadığından üye işlevi, modeless özellik sayfasında hiçbir şey yapmaz.

Örnek

CPropertyPage::QuerySiblings örneğine bakın.

CPropertyPage::Construct

Nesne oluşturmak CPropertyPage için bu üye işlevini çağır.

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

Parametreler

nIDTemplate
Bu sayfa için kullanılan şablonun kimliği.

nIDCaption
Bu sayfanın sekmesine yerleştirilecek adın kimliği. 0 ise, ad bu sayfanın iletişim kutusu şablonundan alınır.

lpszTemplateName
Şablon kaynağının adı olan null olarak sonlandırılan bir dize içerir.

nIDHeaderTitle
Özellik sayfası üst bilgisinin başlık konumuna yerleştirilecek adın kimliği. Varsayılan olarak, 0.

nIDHeaderSubTitle
Özellik sayfası üst bilgisinin alt başlık konumuna yerleştirilecek adın kimliği. Varsayılan olarak, 0.

Açıklamalar

Nesnesi, aşağıdaki koşulların tümü karşılandıktan sonra görüntülenir:

  • Sayfa kullanılarak CPropertySheet::AddPagebir özellik sayfasına eklenmiştir.

  • Özellik sayfasının DoModal veya Create işlevi çağrıldı.

  • Kullanıcı bu sayfayı seçti (sekmeli olarak).

Diğer sınıf oluşturucularından biri çağrılmadıysa çağırın Construct . Construct Üye işlevi esnektir çünkü parametre deyimini boş bırakabilir ve ardından kodunuzun herhangi bir noktasında birden çok parametre ve yapı belirtebilirsiniz.

Dizilerle çalışırken kullanmanız Construct ve veri üyelerine uygun değerler atanması için dizinin her üyesini çağırmanız Construct gerekir.

Örnek

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

Bir CPropertyPage nesne oluşturur.

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

Parametreler

nIDTemplate
Bu sayfa için kullanılan şablonun kimliği.

nIDCaption
Bu sayfanın sekmesine yerleştirilecek adın kimliği. 0 ise, ad bu sayfanın iletişim kutusu şablonundan alınır.

dwSize
lpszTemplateName Bu sayfa için şablonun adını içeren bir dizeye işaret ediyor. Olamaz.NULL

nIDHeaderTitle
Özellik sayfası üst bilgisinin başlık konumuna yerleştirilecek adın kimliği.

nIDHeaderSubTitle
Özellik sayfası üst bilgisinin alt başlık konumuna yerleştirilecek adın kimliği.

Açıklamalar

Nesnesi, aşağıdaki koşulların tümü karşılandıktan sonra görüntülenir:

  • Sayfa kullanılarak CPropertySheet::AddPagebir özellik sayfasına eklenmiştir.

  • Özellik sayfasının DoModal veya Create işlevi çağrıldı.

  • Kullanıcı bu sayfayı seçti (sekmeli olarak).

Birden çok parametreniz varsa (örneğin, bir dizi kullanıyorsanız), yerine CPropertyPagekullanınCPropertySheet::Construct.

Örnek

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

Nesneyle CPropertyPage ilişkili Windows PROPSHEETPAGE yapısını alır.

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Dönüş Değeri

Yapıya bir PROPSHEETPAGE başvuru.

CPropertyPage::m_psp

m_psp üyeleri özelliklerini depolayan bir yapıdır PROPSHEETPAGE.

PROPSHEETPAGE m_psp;

Açıklamalar

Bir özellik sayfası yapılandırıldıktan sonra görünümünü başlatmak için bu yapıyı kullanın.

Üyelerinin listesi de dahil olmak üzere bu yapı hakkında daha fazla bilgi için Windows SDK'sına bakın PROPSHEETPAGE .

Örnek

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

Bu üye işlevi, kullanıcı Tamam'ı veya Şimdi Uygula düğmesini seçtiğinde çerçeve tarafından çağrılır.

virtual BOOL OnApply();

Dönüş Değeri

Değişiklikler kabul edilirse sıfır olmayan; aksi takdirde 0.

Açıklamalar

Çerçeve bu işlevi çağırdığında, özellik sayfasındaki tüm özellik sayfalarında yapılan değişiklikler kabul edilir, özellik sayfası odağı korur ve OnApply döndürür TRUE (1 değeri). Çerçeve tarafından çağrılmadan önce OnApply öğesini çağırmış SetModified ve parametresini olarak TRUEayarlamış olmanız gerekir. Bu, kullanıcı özellik sayfasında bir değişiklik yapar yapmaz Şimdi Uygula düğmesini etkinleştirir.

Kullanıcı Şimdi Uygula düğmesini seçtiğinde programınızın hangi eylemi gerçekleştireceğini belirtmek için bu üye işlevini geçersiz kılın. Geçersiz kılma sırasında, işlevin değişiklikleri kabul etmek ve FALSE değişikliklerin etkili olmasını önlemek için geri dönmesi TRUE gerekir.

çağrılarının OnApply OnOKvarsayılan uygulaması.

Kullanıcı bir özellik sayfasında Şimdi Uygula veya Tamam düğmesine bastığında gönderilen bildirim iletileri hakkında daha fazla bilgi için BkzPSN_APPLY. Windows SDK'sında.

Örnek

CPropertyPage::OnOK örneğine bakın.

CPropertyPage::OnCancel

bu üye işlevi, İptal düğmesi seçildiğinde çerçeve tarafından çağrılır.

virtual void OnCancel();

Açıklamalar

İptal düğmesi eylemlerini gerçekleştirmek için bu üye işlevini geçersiz kılın. Varsayılan değer, yapılan tüm değişiklikleri yok eder.

Örnek

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

Bu üye işlevi, sayfa artık etkin sayfa olmadığında çerçeve tarafından çağrılır.

virtual BOOL OnKillActive();

Dönüş Değeri

Veriler başarıyla güncelleştirildiyse sıfır olmayan, aksi takdirde 0.

Açıklamalar

Özel veri doğrulama görevleri gerçekleştirmek için bu üye işlevini geçersiz kılın.

Bu üye işlevinin varsayılan uygulaması, özellik sayfasındaki denetimlerden ayarları özellik sayfasının üye değişkenlerine kopyalar. İletişim kutusu veri doğrulama (DDV) hatası nedeniyle veriler başarıyla güncelleştirilmezse, sayfa odağı korur.

Bu üye işlevi başarıyla döndürdüğünde, çerçeve sayfanın OnOK işlevini çağırır.

Örnek

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

Bu üye işlevi, kullanıcı Tamam'ı veya Şimdi Uygula düğmesini seçtiğinde, çerçeve tarafından OnKillActiveçağrılır.

virtual void OnOK();

Açıklamalar

Kullanıcı Tamam'ı veya Şimdi Uygula düğmesini seçtiğinde, çerçeve özellik sayfasından PSN_APPLY bildirimi alır. OnOK Özellik sayfası bu durumda bildirimi göndermediğinden arama CPropertySheet::PressButton yaparsanız çağrısı yapılmaz.

Kullanıcı özellik sayfasının tamamını kapattığında etkin olan sayfaya özgü ek davranışlar uygulamak için bu üye işlevini geçersiz kılın.

Bu üye işlevinin varsayılan uygulaması, verilerin işlevde OnKillActive güncelleştirildiğini yansıtmak için sayfayı "temiz" olarak işaretler.

Örnek

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

Bu üye işlevi, kullanıcı İptal düğmesini seçtiğinde ve iptal eylemi gerçekleşmeden önce çerçeve tarafından çağrılır.

virtual BOOL OnQueryCancel();

Dönüş Değeri

İptal işlemini önlemek veya TRUE buna izin vermek için döndürürFALSE.

Açıklamalar

Kullanıcı İptal düğmesini seçtiğinde programın gerçekleştirilen bir eylemi belirtmek için bu üye işlevini geçersiz kılın.

varsayılan uygulaması OnQueryCancel döndürür TRUE.

Örnek

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

Bu üye işlevi, kullanıcı İptal düğmesini seçtiğinde çerçeve tarafından çağrılır.

virtual void OnReset();

Açıklamalar

Çerçeve bu işlevi çağırdığında, kullanıcı tarafından daha önce Şimdi Uygula düğmesini seçerek yapılan tüm özellik sayfalarında yapılan değişiklikler atılır ve özellik sayfası odağı korur.

Kullanıcı İptal düğmesini seçtiğinde programın hangi eylemi gerçekleştireceğini belirtmek için bu üye işlevini geçersiz kılın.

varsayılan uygulaması OnReset hiçbir şey yapmaz.

Örnek

CPropertyPage::OnCancel örneğine bakın.

CPropertyPage::OnSetActive

Bu üye işlevi, sayfa kullanıcı tarafından seçildiğinde ve etkin sayfaya dönüştüğünde çerçeve tarafından çağrılır.

virtual BOOL OnSetActive();

Dönüş Değeri

Sayfa başarıyla etkin olarak ayarlandıysa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Bir sayfa etkinleştirildiğinde görevleri gerçekleştirmek için bu üye işlevini geçersiz kılın. Bu üye işlevini geçersiz kılmanız genellikle veri üyelerini güncelleştirdikten sonra sayfa denetimlerini yeni verilerle güncelleştirmesine izin vermek için varsayılan sürümü çağırır.

Varsayılan uygulama, önceden oluşturulmamışsa sayfanın penceresini oluşturur ve etkin sayfa yapar.

Örnek

CPropertySheet::SetFinishText örneğine bakın.

CPropertyPage::OnWizardBack

Bu üye işlevi, kullanıcı bir sihirbazda Geri düğmesini seçtiğinde çerçeve tarafından çağrılır.

virtual LRESULT OnWizardBack();

Dönüş Değeri

Bir sonraki sayfaya otomatik olarak ilerlemek için 0; Sayfanın değişmesini önlemek için -1. Bir sonraki sayfadan başka bir sayfaya atlamak için görüntülenecek iletişim kutusunun tanımlayıcısını döndürebilirsiniz.

Açıklamalar

Geri düğmesine basıldığında kullanıcının gerçekleştirmesi gereken bazı eylemleri belirtmek için bu üye işlevini geçersiz kılın.

Sihirbaz türü özellik sayfası oluşturma hakkında daha fazla bilgi için bkz CPropertySheet::SetWizardMode. .

Örnek

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

Kullanıcı bir sihirbazda Son düğmesini seçtiğinde bu üye işlevi çerçeve tarafından çağrılır.

virtual BOOL OnWizardFinish();

Dönüş Değeri

Sihirbaz tamamlandığında özellik sayfası yok edilirse sıfır olmayan; aksi takdirde sıfır.

Açıklamalar

Kullanıcı bir sihirbazda Son düğmesini seçtiğinde, çerçeve bu işlevi çağırır; döndürdüğünde OnWizardFinish TRUE (sıfır olmayan bir değer), özellik sayfası yok edilebilir (ancak aslında yok değildir). Özellik sayfasını yok etmek için çağrısı DestroyWindow . çağrısı OnWizardFinishyapmayınDestroyWindow; bunu yapmak yığın bozulmasına veya diğer hatalara neden olur.

Son düğmesine basıldığında kullanıcının gerçekleştirmesi gereken bazı eylemleri belirtmek için bu üye işlevini geçersiz kılabilirsiniz. Bu işlevi geçersiz kıldığınızda, özellik sayfasının yok edilmesini önlemek için geri dönün FALSE .

Kullanıcı bir sihirbaz özellik sayfasında Son düğmesine bastığında gönderilen bildirim iletileri hakkında daha fazla bilgi için BkzPSN_WIZFINISH. Windows SDK'sında.

Sihirbaz türü özellik sayfası oluşturma hakkında daha fazla bilgi için bkz CPropertySheet::SetWizardMode. .

Örnek

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

Kullanıcı bir sihirbazda İleri düğmesini seçtiğinde bu üye işlevi çerçeve tarafından çağrılır.

virtual LRESULT OnWizardNext();

Dönüş Değeri

Bir sonraki sayfaya otomatik olarak ilerlemek için 0; Sayfanın değişmesini önlemek için -1. Bir sonraki sayfadan başka bir sayfaya atlamak için görüntülenecek iletişim kutusunun tanımlayıcısını döndürebilirsiniz.

Açıklamalar

İleri düğmesine basıldığında kullanıcının gerçekleştirmesi gereken bazı eylemleri belirtmek için bu üye işlevini geçersiz kılın.

Sihirbaz türü özellik sayfası oluşturma hakkında daha fazla bilgi için bkz CPropertySheet::SetWizardMode. .

Örnek

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

Özellik sayfasındaki her sayfaya bir ileti iletmek için bu üye işlevini çağırın.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Parametreler

wParam
İletiye bağımlı ek bilgileri belirtir.

lParam
İletiye bağımlı ek bilgileri belirtir

Dönüş Değeri

Özellik sayfasındaki bir sayfadan sıfır olmayan değer veya tüm sayfalar 0 değerini döndürürse 0.

Açıklamalar

Sayfa sıfır olmayan bir değer döndürürse, özellik sayfası iletiyi sonraki sayfalara göndermez.

Örnek

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

Özellik sayfasındaki ayarların uygun dış nesneye uygulanması gerekip gerekmediğine bağlı olarak Şimdi Uygula düğmesini etkinleştirmek veya devre dışı bırakmak için bu üye işlevini çağırın.

void SetModified(BOOL bChanged = TRUE);

Parametreler

bChanged
TRUE özellik sayfası ayarlarının son kez uygulandığından beri değiştirildiğini belirtmek için; FALSE özellik sayfası ayarlarının uygulandığını veya yoksayılması gerektiğini belirtmek için.

Açıklamalar

Çerçeve, hangi sayfaların "kirli" olduğunu, diğer bir ifadeyle çağırdığınız SetModified( TRUE )özellik sayfalarını izler. Sayfalardan birini ararsanız SetModified( TRUE ) Şimdi Uygula düğmesi her zaman etkinleştirilir. Sayfalardan birini aradığınızda SetModified( FALSE ) Şimdi Uygula düğmesi devre dışı bırakılır, ancak yalnızca diğer sayfalardan hiçbiri "kirli" değilse devre dışı bırakılır.

Örnek

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

Ayrıca bkz.

MFC Örneği CMNCTRL1
MFC Örneği CMNCTRL2
MFC Örneği PROPDLG
MFC Örneği SNAPVW
CDialog Sınıf
Hiyerarşi Grafiği
CPropertySheet Sınıf