Sdílet prostřednictvím


CPropertyPage Třída

Představuje jednotlivé stránky seznamu vlastností, jinak označované jako dialogové okno karty.

Syntaxe

class CPropertyPage : public CDialog

Členové

Veřejné konstruktory

Název Popis
CPropertyPage::CPropertyPage CPropertyPage Vytvoří objekt.

Veřejné metody

Název Popis
CPropertyPage::CancelToClose Změní tlačítko OK na tlačítko Zavřít a zakáže tlačítko Zrušit po neopravitelné změně na stránce modální seznam vlastností.
CPropertyPage::Construct CPropertyPage Vytvoří objekt. Použijte Construct , pokud chcete zadat parametry za běhu nebo pokud používáte pole.
CPropertyPage::GetPSP Načte strukturu Windows PROPSHEETPAGE přidruženou k objektu CPropertyPage .
CPropertyPage::OnApply Volá se rozhraním při kliknutí na tlačítko Použít nyní .
CPropertyPage::OnCancel Volá se rozhraním při kliknutí na tlačítko Storno .
CPropertyPage::OnKillActive Volá se rozhraním, pokud aktuální stránka již není aktivní stránkou. Tady proveďte ověření dat.
CPropertyPage::OnOK Volá se rozhraním při kliknutí na tlačítko OK, Použít nyní nebo Zavřít .
CPropertyPage::OnQueryCancel Volá se rozhraním při kliknutí na tlačítko Storno a před provedením zrušení.
CPropertyPage::OnReset Volá se rozhraním při kliknutí na tlačítko Storno .
CPropertyPage::OnSetActive Volá se rozhraním, když je stránka aktivní.
CPropertyPage::OnWizardBack Volá se rozhraním při kliknutí na tlačítko Zpět při použití seznamu vlastností typu průvodce.
CPropertyPage::OnWizardFinish Volá se rozhraním při kliknutí na tlačítko Dokončit při použití seznamu vlastností typu průvodce.
CPropertyPage::OnWizardNext Volá se rozhraním při kliknutí na tlačítko Další při použití seznamu vlastností typu průvodce.
CPropertyPage::QuerySiblings Přepošla zprávu na každou stránku seznamu vlastností.
CPropertyPage::SetModified Volání pro aktivaci nebo deaktivaci tlačítka Použít nyní

Veřejné datové členy

Název Popis
CPropertyPage::m_psp Struktura Windows PROPSHEETPAGE . Poskytuje přístup k parametrům základní stránky vlastností.

Poznámky

Stejně jako u standardních dialogových oken odvozujete třídu pro CPropertyPage každou stránku v seznamu vlastností. Chcete-li použít CPropertyPage-odvozené objekty, nejprve vytvořte CPropertySheet objekt a pak vytvořte objekt pro každou stránku, která se nachází v seznamu vlastností. Volání CPropertySheet::AddPage pro každou stránku v listu a zobrazení seznamu vlastností voláním CPropertySheet::DoModal modálního seznamu vlastností nebo CPropertySheet::Create seznamu bez moderování vlastností.

Můžete vytvořit typ dialogového okna s názvem průvodce, který se skládá z seznamu vlastností s posloupností stránek vlastností, které uživatele provedou jednotlivými kroky operace, například nastavením zařízení nebo vytvořením bulletinu. V dialogovém okně karty typu průvodce stránky vlastností nemají karty a najednou se zobrazí jenom jedna stránka vlastností. Místo tlačítek OK a Použít nynídialogové okno karta Typ průvodce tlačítko Zpět, tlačítko Další nebo Dokončit a tlačítko Zrušit.

Další informace o vytvoření seznamu vlastností jako průvodce naleznete v tématu CPropertySheet::SetWizardMode. Další informace o používání CPropertyPage objektů naleznete v článku Seznamy vlastností a stránky vlastností.

Hierarchie dědičnosti

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Požadavky

Záhlaví: afxdlgs.h

CPropertyPage::CancelToClose

Volání této funkce po neopravitelné změně dat na stránce modálního seznamu vlastností.

void CancelToClose();

Poznámky

Tato funkce změní tlačítko OK na Tlačítko Zavřít a zakáže tlačítko Zrušit. Tato změna upozorní uživatele, že změna je trvalá a změny nelze zrušit.

Členová CancelToClose funkce ve výchozím nastavení nemá v seznamu bezmodální vlastnosti nic, protože seznam bez moderování vlastností ve výchozím nastavení neobsahuje tlačítko Storno .

Příklad

Podívejte se na příklad pro CPropertyPage::QuerySiblings.

CPropertyPage::Construct

Voláním této členské funkce vytvoříte CPropertyPage objekt.

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
ID šablony použité pro tuto stránku

nIDCaption
ID názvu, který se má umístit na kartu této stránky. Pokud 0, název bude převzat ze šablony dialogového okna pro tuto stránku.

lpszTemplateName
Obsahuje řetězec ukončený hodnotou null, který je názvem prostředku šablony.

nIDHeaderTitle
ID názvu, který se má umístit do umístění názvu záhlaví stránky vlastností. Ve výchozím nastavení 0.

nIDHeaderSubTitle
ID názvu, který se má umístit do umístění podnadpisu záhlaví stránky vlastností. Ve výchozím nastavení 0.

Poznámky

Objekt se zobrazí po splnění všech následujících podmínek:

  • Stránka byla přidána do seznamu vlastností pomocí .CPropertySheet::AddPage

  • Volali jsme seznam DoModal vlastností nebo Create funkci.

  • Uživatel tuto stránku vybral (na záložku).

Volání Construct , pokud jeden z ostatních konstruktorů třídy nebyl volán. Členová Construct funkce je flexibilní, protože příkaz parametru můžete ponechat prázdný a pak zadat více parametrů a konstrukce v libovolném bodě v kódu.

Musíte použít Construct při práci s poli a musíte volat Construct pro každého člena pole, aby datové členy byly přiřazeny správné hodnoty.

Příklad

// 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 Vytvoří objekt.

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
ID šablony použité pro tuto stránku

nIDCaption
ID názvu, který se má umístit na kartu této stránky. Pokud 0, název bude převzat ze šablony dialogového okna pro tuto stránku.

dwSize
lpszTemplateName Odkazuje na řetězec obsahující název šablony pro tuto stránku. Nemůžu být NULL.

nIDHeaderTitle
ID názvu, který se má umístit do umístění názvu záhlaví stránky vlastností.

nIDHeaderSubTitle
ID názvu, který se má umístit do umístění podnadpisu záhlaví stránky vlastností.

Poznámky

Objekt se zobrazí po splnění všech následujících podmínek:

  • Stránka byla přidána do seznamu vlastností pomocí .CPropertySheet::AddPage

  • Volali jsme seznam DoModal vlastností nebo Create funkci.

  • Uživatel tuto stránku vybral (na záložku).

Pokud máte více parametrů (například pokud používáte pole), použijte CPropertySheet::Construct místo CPropertyPage.

Příklad

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

Načte strukturu Windows PROPSHEETPAGE přidruženou k objektu CPropertyPage .

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Návratová hodnota

Odkaz na PROPSHEETPAGE strukturu.

CPropertyPage::m_psp

m_psp je struktura, jejíž členy ukládají charakteristiky PROPSHEETPAGE.

PROPSHEETPAGE m_psp;

Poznámky

Tato struktura slouží k inicializaci vzhledu stránky vlastností po jeho vytvoření.

Další informace o této struktuře, včetně výpisu jejích členů, najdete PROPSHEETPAGE v sadě Windows SDK.

Příklad

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

Tato členová funkce je volána rozhraním, když uživatel zvolí tlačítko OK nebo Použít nyní .

virtual BOOL OnApply();

Návratová hodnota

Nenulové, pokud jsou změny přijaty; jinak 0.

Poznámky

Když architektura volá tuto funkci, změny provedené na všech stránkách vlastností v seznamu vlastností jsou přijaty, list vlastností zachová fokus a OnApply vrátí TRUE (hodnota 1). Před OnApply zavoláním rozhraní je nutné volat SetModified a nastavit jeho parametr na TRUE. Tím se aktivuje tlačítko Použít nyní , jakmile uživatel provede změnu na stránce vlastností.

Přepište tuto členovu funkci a určete, jakou akci program provede, když uživatel vybere tlačítko Použít nyní . Při přepsání by se funkce měla vrátit TRUE , aby přijímala změny, a FALSE aby se změny projevily.

Výchozí implementace OnApply volání OnOK.

Další informace o zprávách oznámení odeslaných, když uživatel stiskne tlačítko Použít nyní nebo OK v seznamu vlastností, naleznete PSN_APPLY v sadě Windows SDK.

Příklad

Podívejte se na příklad pro CPropertyPage::OnOK.

CPropertyPage::OnCancel

Tato členová funkce je volána rozhraním při výběru tlačítka Zrušit .

virtual void OnCancel();

Poznámky

Chcete-li provést akce tlačítka Zrušit , přepište tuto členovu funkci. Výchozí neguje všechny provedené změny.

Příklad

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

Tato členová funkce je volána rozhraním, pokud stránka již není aktivní stránkou.

virtual BOOL OnKillActive();

Návratová hodnota

Nenulové, pokud byla data úspěšně aktualizována, jinak 0.

Poznámky

Přepište tuto členovu funkci tak, aby prováděla speciální úlohy ověření dat.

Výchozí implementace této členské funkce kopíruje nastavení z ovládacích prvků na stránce vlastností na členské proměnné stránky vlastností. Pokud se data neaktualizovala úspěšně kvůli chybě ověření dat dialogového okna (DDV), zachovají se fokus na stránce.

Po úspěšném vrácení této členské funkce bude architektura volat funkci stránky OnOK .

Příklad

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

Tato členová funkce je volána rozhraním, když uživatel zvolí tlačítko OK nebo Použít nyní ihned po volání OnKillActiverozhraní .

virtual void OnOK();

Poznámky

Když uživatel zvolí tlačítko OK nebo Použít nyní , architektura obdrží PSN_APPLY oznámení ze stránky vlastností. Volání OnOK nebude provedeno, pokud zavoláte CPropertySheet::PressButton , protože stránka vlastností v takovém případě neodesílá oznámení.

Přepište tuto členovou funkci tak, aby implementovaly další chování specifické pro aktuálně aktivní stránku, když uživatel zavře celý seznam vlastností.

Výchozí implementace této členské funkce označuje stránku jako "čistou", aby odrážela, že data byla ve OnKillActive funkci aktualizována.

Příklad

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

Tato členová funkce je volána rozhraním, když uživatel vybere tlačítko Zrušit a před provedením akce zrušení.

virtual BOOL OnQueryCancel();

Návratová hodnota

Vrátí, FALSE aby se zabránilo operaci zrušení nebo TRUE ji povolila.

Poznámky

Tuto členovou funkci přepište tak, aby určila akci, kterou program provede, když uživatel vybere tlačítko Zrušit .

Výchozí implementace návratů OnQueryCancel TRUE.

Příklad

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

Tato členová funkce je volána rozhraním, když uživatel zvolí tlačítko Zrušit .

virtual void OnReset();

Poznámky

Když architektura volá tuto funkci, změny všech stránek vlastností provedené uživatelem, které uživatel dříve zvolil tlačítko Použít nyní , se zahodí a list vlastností si zachová fokus.

Přepište tuto členovu funkci a určete, jakou akci program provede, když uživatel vybere tlačítko Zrušit .

Výchozí implementace OnReset nic nedělá.

Příklad

Podívejte se na příklad pro CPropertyPage::OnCancel.

CPropertyPage::OnSetActive

Tato členová funkce je volána rozhraním při výběru stránky uživatelem a stane se aktivní stránkou.

virtual BOOL OnSetActive();

Návratová hodnota

Nenulové, pokud byla stránka úspěšně nastavena jako aktivní; jinak 0.

Poznámky

Tuto členovou funkci přepište, aby prováděla úkoly při aktivaci stránky. Přepsání této členské funkce obvykle volá výchozí verzi po aktualizaci datových členů, aby bylo možné aktualizovat ovládací prvky stránky novými daty.

Výchozí implementace vytvoří okno pro stránku, pokud ještě není vytvořeno, a nastaví ji jako aktivní stránku.

Příklad

Podívejte se na příklad pro CPropertySheet::SetFinishText.

CPropertyPage::OnWizardBack

Tato členová funkce je volána rozhraním, když uživatel vybere tlačítko Zpět v průvodci.

virtual LRESULT OnWizardBack();

Návratová hodnota

0 pro automatický přechod na další stránku; -1, aby se zabránilo změně stránky. Pokud chcete přejít na jinou stránku než na další, vraťte identifikátor dialogového okna, který se má zobrazit.

Poznámky

Přepsat tuto členovou funkci tak, aby určil, jakou akci musí uživatel provést, když je stisknuto tlačítko Zpět .

Další informace o tom, jak vytvořit seznam vlastností typu průvodce, naleznete v tématu CPropertySheet::SetWizardMode.

Příklad

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

Tato členová funkce je volána rozhraním, když uživatel vybere tlačítko Dokončit v průvodci.

virtual BOOL OnWizardFinish();

Návratová hodnota

Nenulové, pokud je po dokončení průvodce zničen seznam vlastností; jinak nula.

Poznámky

Když uživatel vybere tlačítko Dokončit v průvodci, architektura zavolá tuto funkci; když OnWizardFinish se vrátí TRUE (nenulová hodnota), bude možné seznam vlastností zničit (ale ve skutečnosti není zničen). Volání DestroyWindow k zničení seznamu vlastností Nezavolejte DestroyWindow z OnWizardFinishněj ; tím způsobí poškození haldy nebo jiné chyby.

Tuto členovou funkci můžete přepsat, aby bylo možné určit akci, kterou musí uživatel provést při stisknutí tlačítka Dokončit . Při přepsání této funkce se vraťte FALSE , aby se zabránilo zničení seznamu vlastností.

Další informace o zprávách oznámení odeslaných po stisknutí tlačítka Dokončit v seznamu vlastností průvodce naleznete PSN_WIZFINISH v sadě Windows SDK.

Další informace o tom, jak vytvořit seznam vlastností typu průvodce, naleznete v tématu CPropertySheet::SetWizardMode.

Příklad

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

Tato členová funkce je volána rozhraním, když uživatel vybere tlačítko Další v průvodci.

virtual LRESULT OnWizardNext();

Návratová hodnota

0 pro automatický přechod na další stránku; -1, aby se zabránilo změně stránky. Pokud chcete přejít na jinou stránku než na další, vraťte identifikátor dialogového okna, který se má zobrazit.

Poznámky

Přepsat tuto členovou funkci, aby určil, jakou akci musí uživatel provést, když je stisknuto tlačítko Další .

Další informace o tom, jak vytvořit seznam vlastností typu průvodce, naleznete v tématu CPropertySheet::SetWizardMode.

Příklad

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

Voláním této členské funkce přepošlejte zprávu na každou stránku v seznamu vlastností.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Parametry

wParam
Určuje další informace závislé na zprávách.

lParam
Určuje další informace závislé na zprávách.

Návratová hodnota

Nenulová hodnota ze stránky v seznamu vlastností nebo 0, pokud všechny stránky vrátí hodnotu 0.

Poznámky

Pokud stránka vrátí nenulovou hodnotu, seznam vlastností neodesílá zprávu na další stránky.

Příklad

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

Voláním této členské funkce povolíte nebo zakážete tlačítko Použít nyní na základě toho, jestli se má nastavení na stránce vlastností použít u příslušného externího objektu.

void SetModified(BOOL bChanged = TRUE);

Parametry

bChanged
TRUE chcete-li označit, že nastavení stránky vlastností bylo změněno od posledního použití; FALSE chcete-li označit, že nastavení stránky vlastností bylo použito nebo by mělo být ignorováno.

Poznámky

Architektura sleduje, které stránky jsou "špinavé", to znamená stránky vlastností, pro které jste volali SetModified( TRUE ). Tlačítko Použít nyní bude vždy povoleno, pokud voláte SetModified( TRUE ) jednu ze stránek. Tlačítko Použít nyní bude při volání SetModified( FALSE ) jedné ze stránek zakázané, ale pouze v případě, že žádná z ostatních stránek není "špinavá".

Příklad

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

Viz také

Mfc – ukázka CMNCTRL1
Mfc – ukázka CMNCTRL2
Mfc – ukázka PROPDLG
Mfc – ukázka SNAPVW
CDialog Třída
Graf hierarchie
CPropertySheet Třída