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 CPropertyPage
iç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
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::AddPage
bir özellik sayfasına eklenmiştir.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::AddPage
bir özellik sayfasına eklenmiştir.Kullanıcı bu sayfayı seçti (sekmeli olarak).
Birden çok parametreniz varsa (örneğin, bir dizi kullanıyorsanız), yerine CPropertyPage
kullanı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 TRUE
ayarlamış 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
OnOK
varsayı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ı OnWizardFinish
yapmayı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