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ć CPropertyPage
obiektó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
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
.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
.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_psp
jest 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 OnKillActive
struktury .
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 OnWizardFinish
adresu ; 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