Megosztás a következőn keresztül:


CPropertyPage osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Egy tulajdonságlap egyes lapjait jelöli, más néven tabulátor párbeszédpanelt.

Szemantika

class CPropertyPage : public CDialog

Tagok

Nyilvános konstruktorok

Név Description
CPropertyPage::CPropertyPage Egy CPropertyPage objektumot hoz létre.

Nyilvános metódusok

Név Description
CPropertyPage::CancelToClose Módosítja az OK gombot a Bezárás olvasásához, és letiltja a Mégse gombot egy modális tulajdonságlap lapjának helyreállíthatatlan módosítása után.
CPropertyPage::Construct Egy CPropertyPage objektumot hoz létre. Használja Construct , ha futásidőben szeretné megadni a paramétereket, vagy tömböket használ.
CPropertyPage::GetPSP Lekéri az objektumhoz társított Windows-struktúrát PROPSHEETPAGECPropertyPage .
CPropertyPage::OnApply A keretrendszer meghívta, amikor az Alkalmaz most gombra kattint.
CPropertyPage::OnCancel A keretrendszer meghívta, amikor a Mégse gombra kattint.
CPropertyPage::OnKillActive A keretrendszer meghívja, ha az aktuális lap már nem az aktív lap. Itt végezhet adatérvényesítést.
CPropertyPage::OnOK A keretrendszer meghívja, amikor az OK, az Alkalmaz most vagy a Bezárás gombra kattint.
CPropertyPage::OnQueryCancel A keretrendszer meghívta, amikor a Mégse gombra kattint, és mielőtt a lemondás megtörtént.
CPropertyPage::OnReset A keretrendszer meghívta, amikor a Mégse gombra kattint.
CPropertyPage::OnSetActive A keretrendszer meghívta, amikor az oldal aktívvá vált.
CPropertyPage::OnWizardBack A keretrendszer meghívta, amikor a Vissza gombra kattint egy varázsló típusú tulajdonságlap használata közben.
CPropertyPage::OnWizardFinish A keretrendszer meghívja, amikor a Befejezés gombra kattint egy varázsló típusú tulajdonságlap használata közben.
CPropertyPage::OnWizardNext A keretrendszer meghívta, amikor a Tovább gombra kattint egy varázsló típusú tulajdonságlap használata közben.
CPropertyPage::QuerySiblings Továbbítja az üzenetet a tulajdonságlap minden oldalára.
CPropertyPage::SetModified Hívja meg az Alkalmaz most gomb aktiválását vagy inaktiválását.

Nyilvános adatok tagjai

Név Description
CPropertyPage::m_psp A Windows-struktúra PROPSHEETPAGE . Hozzáférést biztosít az alapvető tulajdonságlapparaméterekhez.

Megjegyzések

A szokásos párbeszédpanelekhez hasonlóan a tulajdonságlap minden oldalához CPropertyPage származtat egy osztályt. A származtatott objektumok használatához CPropertyPageelőször hozzon létre egy CPropertySheet objektumot, majd hozzon létre egy objektumot a tulajdonságlapon található minden egyes laphoz. Hívja meg CPropertySheet::AddPage a lap minden lapját, majd jelenítse meg a tulajdonságlapot egy modális tulajdonságlap vagy CPropertySheet::Create egy mód nélküli tulajdonságlap meghívásávalCPropertySheet::DoModal.

Létrehozhat egy varázsló nevű laptípust, amely egy tulajdonságlapból áll, amely a felhasználót végigvezeti egy művelet lépésein, például egy eszköz beállításán vagy hírlevél létrehozásán. A varázsló típusú lap párbeszédpanelen a tulajdonságlapok nem rendelkeznek lapfülekkel, és egyszerre csak egy tulajdonságlap látható. Az OK és az Alkalmaz most gomb helyett a varázsló típusú párbeszédpanelen a Vissza gomb, a Tovább vagy a Befejezés gomb, valamint a Mégse gomb látható.

További információ a tulajdonságlap varázslóként való létrehozásáról: CPropertySheet::SetWizardMode. Az objektumok használatáról CPropertyPage további információt a Tulajdonságlapok és a Tulajdonságlapok című cikkben talál.

Öröklési hierarchia

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Requirements

Fejléc:afxdlgs.h

CPropertyPage::CancelToClose

Hívja meg ezt a függvényt, miután helyreállíthatatlan módosítás történt egy modális tulajdonságlap egyik lapján lévő adatokon.

void CancelToClose();

Megjegyzések

Ez a függvény az OK gombot bezárásra módosítja, és letiltja a Mégse gombot. Ez a módosítás figyelmezteti a felhasználót, hogy a módosítás végleges, és a módosítások nem törölhetők.

A CancelToClose tagfüggvény semmit sem tesz egy mód nélküli tulajdonságlapon, mert a mód nélküli tulajdonságlapon alapértelmezés szerint nincs Mégse gomb.

Example

Lásd a CPropertyPage::QuerySiblings példáját.

CPropertyPage::Construct

A tagfüggvény meghívása objektum létrehozásához CPropertyPage .

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

Paraméterek

nIDTemplate
A laphoz használt sablon azonosítója.

nIDCaption
A lap lapfülén elhelyezendő név azonosítója. Ha 0, a rendszer a nevet a lap párbeszédpanelsablonjából veszi fel.

lpszTemplateName
Null értékű sztringet tartalmaz, amely egy sablonerőforrás neve.

nIDHeaderTitle
A tulajdonságlap fejlécének címhelyén elhelyezendő név azonosítója. Alapértelmezés szerint 0.

nIDHeaderSubTitle
A tulajdonságoldal fejlécének alcímhelyén elhelyezendő név azonosítója. Alapértelmezés szerint 0.

Megjegyzések

Az objektum az alábbi feltételek teljesülése után jelenik meg:

  • A lap hozzá lett adva egy tulajdonságlaphoz a következő használatával CPropertySheet::AddPage: .

  • A tulajdonságlap DoModal vagy Create függvény meghívása megtörtént.

  • A felhasználó ezt a lapot kiválasztotta (erre a lapra van beszúrva).

Hívjon Construct , ha a többi osztálykonstruktor egyikét nem hívták meg. A Construct tagfüggvény rugalmas, mert üresen hagyhatja a paraméterutasítást, majd a kód bármely pontján megadhat több paramétert és konstrukciót.

A tömbök használatakor használnia Construct kell, és a tömb minden egyes tagját meg kell hívnia Construct , hogy az adattagok megfelelő értékekhez legyenek rendelve.

Example

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

Egy CPropertyPage objektumot hoz létre.

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

Paraméterek

nIDTemplate
A laphoz használt sablon azonosítója.

nIDCaption
A lap lapfülén elhelyezendő név azonosítója. Ha 0, a rendszer a nevet a lap párbeszédpanelsablonjából veszi fel.

dwSize
lpszTemplateName A lap sablonjának nevét tartalmazó sztringre mutat. Nem lehet NULL.

nIDHeaderTitle
A tulajdonságlap fejlécének címhelyén elhelyezendő név azonosítója.

nIDHeaderSubTitle
A tulajdonságoldal fejlécének alcímhelyén elhelyezendő név azonosítója.

Megjegyzések

Az objektum az alábbi feltételek teljesülése után jelenik meg:

  • A lap hozzá lett adva egy tulajdonságlaphoz a következő használatával CPropertySheet::AddPage: .

  • A tulajdonságlap DoModal vagy Create függvény meghívása megtörtént.

  • A felhasználó ezt a lapot kiválasztotta (erre a lapra van beszúrva).

Ha több paraméterrel rendelkezik (például tömb használata esetén), használja CPropertySheet::Construct ahelyett CPropertyPage, hogy .

Example

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

Lekéri az objektumhoz társított Windows-struktúrát PROPSHEETPAGECPropertyPage .

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Visszaadott érték

A szerkezetre PROPSHEETPAGE mutató hivatkozás.

CPropertyPage::m_psp

m_psp olyan struktúra, amelynek tagjai a PROPSHEETPAGE.

PROPSHEETPAGE m_psp;

Megjegyzések

Ezzel a struktúrával inicializálhatja egy tulajdonságlap megjelenését a létrehozása után.

Erről a struktúráról, beleértve a tagok listáját is, a Windows SDK-ban talál PROPSHEETPAGE további információt.

Example

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

Ezt a tagfüggvényt a keretrendszer hívja meg, amikor a felhasználó az OK vagy az Alkalmaz gombot választja.

virtual BOOL OnApply();

Visszaadott érték

Nonzero, ha a módosításokat elfogadják; egyéb esetben 0.

Megjegyzések

Amikor a keretrendszer meghívja ezt a függvényt, a tulajdonságlap összes tulajdonságlapján végrehajtott módosítások el lesznek fogadva, a tulajdonságlap megtartja a fókuszt, és OnApply visszaadja TRUE (az 1 értéket). Mielőtt OnApply meghívható lenne a keretrendszer, meg kell hívnia SetModified és a paraméterét a következőre TRUEkell állítania: . Ez aktiválja az Alkalmaz most gombot, amint a felhasználó módosítást végez a tulajdonságlapon.

A tagfüggvény felülbírálása annak megadásához, hogy a program milyen műveletet hajt végre, amikor a felhasználó az Alkalmaz most gombot választja. Felülíráskor a függvénynek vissza kell térnie TRUE a módosítások elfogadásához és FALSE a módosítások érvénybe lépésének megakadályozásához.

A hívások OnOKalapértelmezett implementálásaOnApply.

A tulajdonságlapOn az Alkalmazás most vagy az OK gomb lenyomásakor küldött értesítési üzenetekről a Windows SDK-ban talál PSN_APPLY további információt.

Example

Lásd a CPropertyPage::OnOK példáját.

CPropertyPage::OnCancel

Ezt a tagfüggvényt a keretrendszer hívja meg a Mégse gomb kiválasztásakor.

virtual void OnCancel();

Megjegyzések

A Mégse gombműveletek végrehajtásához felülbírálja ezt a tagfüggvényt. Az alapértelmezett beállítás nem módosítja a végrehajtott módosításokat.

Example

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

Ezt a tagfüggvényt a keretrendszer hívja meg, ha a lap már nem aktív lap.

virtual BOOL OnKillActive();

Visszaadott érték

Nem, ha az adatok frissítése sikeresen megtörtént, ellenkező esetben 0.

Megjegyzések

A tagfüggvény felülbírálása speciális adatérvényesítési feladatok végrehajtásához.

Ennek a tagfüggvénynek az alapértelmezett implementációja átmásolja a beállításokat a tulajdonságlap vezérlőiből a tulajdonságlap tagváltozóiba. Ha az adatok egy párbeszédpanel adatérvényesítési (DDV) hibája miatt nem frissülnek sikeresen, a lap megőrzi a fókuszt.

A tagfüggvény sikeres visszatérése után a keretrendszer meghívja a lap függvényét OnOK .

Example

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

Ezt a tagfüggvényt a keretrendszer hívja meg, amikor a felhasználó közvetlenül a keretrendszer hívása OnKillActiveután az OK vagy az Alkalmaz gombot választja.

virtual void OnOK();

Megjegyzések

Amikor a felhasználó az OK vagy az Alkalmaz most gombot választja, a keretrendszer megkapja az PSN_APPLY értesítést a tulajdonságlapról. A hívás OnOK nem lesz meghívva, CPropertySheet::PressButton mert a tulajdonságlap ebben az esetben nem küld értesítést.

A tagfüggvény felülbírálása az aktuálisan aktív lapra jellemző további viselkedés implementálásához, amikor a felhasználó a teljes tulajdonságlapot bezárja.

Ennek a tagfüggvénynek az alapértelmezett implementációja "tisztaként" jelöli meg a lapot, hogy tükrözze, hogy az adatok frissültek a OnKillActive függvényben.

Example

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

Ezt a tagfüggvényt a keretrendszer hívja meg, amikor a felhasználó kiválasztja a Mégse gombot, és még a lemondási művelet végrehajtása előtt.

virtual BOOL OnQueryCancel();

Visszaadott érték

Visszatérés a FALSE megszakítási művelet megakadályozásához vagy TRUE engedélyezéséhez.

Megjegyzések

A tagfüggvény felülbírálása a program által a Mégse gomb kiválasztásakor végrehajtandó művelet megadásához.

A visszatérések alapértelmezett implementációja OnQueryCancelTRUE.

Example

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

Ezt a tagfüggvényt a keretrendszer hívja meg, amikor a felhasználó a Mégse gombot választja.

virtual void OnReset();

Megjegyzések

Amikor a keretrendszer meghívja ezt a függvényt, a rendszer elveti a korábban az Alkalmaz gombot választó felhasználó által végrehajtott összes tulajdonságlapot, és a tulajdonságlap megtartja a fókuszt.

A tagfüggvény felülbírálása annak megadásához, hogy a program milyen műveletet hajt végre, amikor a felhasználó a Mégse gombra kattint.

Az alapértelmezett implementáció OnReset nem tesz semmit.

Example

Lásd a CPropertyPage példáját::OnCancel.

CPropertyPage::OnSetActive

Ezt a tagfüggvényt a keretrendszer hívja meg, amikor a felhasználó kiválasztja a lapot, és aktív lap lesz.

virtual BOOL OnSetActive();

Visszaadott érték

Nonzero, ha a lap sikeresen be lett állítva aktív; egyéb esetben 0.

Megjegyzések

A tagfüggvény felülbírálása a lapok aktiválásakor végrehajtandó feladatok végrehajtásához. A tagfüggvény felülbírálása általában az alapértelmezett verziót hívja meg az adattagok frissítése után, hogy lehetővé tegye a lapvezérlők új adatokkal való frissítését.

Az alapértelmezett implementáció létrehozza a lap ablakát, ha korábban még nem hozta létre, és aktívvá teszi.

Example

Lásd a CPropertySheet::SetFinishText példáját.

CPropertyPage::OnWizardBack

Ezt a tagfüggvényt a keretrendszer hívja meg, amikor a felhasználó kiválasztja a Vissza gombot egy varázslóban.

virtual LRESULT OnWizardBack();

Visszaadott érték

0 a következő oldalra való automatikus ugráshoz; -1 a lap módosításának megakadályozásához. Ha nem a következő oldalra szeretne ugorni, adja vissza a megjelenítendő párbeszédpanel azonosítóját.

Megjegyzések

Bírálja felül ezt a tagfüggvényt, és adjon meg néhány műveletet, amelyet a felhasználónak a Vissza gomb lenyomásakor kell végrehajtania.

A varázsló típusú tulajdonságlap készítésével kapcsolatos további információkért lásd: CPropertySheet::SetWizardMode.

Example

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

Ezt a tagfüggvényt a keretrendszer hívja meg, amikor a felhasználó kiválasztja a Befejezés gombot egy varázslóban.

virtual BOOL OnWizardFinish();

Visszaadott érték

Nonzero, ha a tulajdonságlap a varázsló befejeződésekor megsemmisül; ellenkező esetben nulla.

Megjegyzések

Amikor egy felhasználó kiválasztja a Befejezés gombot egy varázslóban, a keretrendszer meghívja ezt a függvényt; ha OnWizardFinish visszaadja TRUE (nemero érték), a tulajdonságlap meg lehet semmisíteni (de valójában nem semmisül meg). Hívás DestroyWindow a tulajdonságlap megsemmisítésére. Ne hívjon DestroyWindow ; OnWizardFinishez halomsérülést vagy más hibát okoz.

Felülbírálhatja ezt a tagfüggvényt, és megadhat néhány műveletet, amelyet a felhasználónak el kell végeznie a Befejezés gomb megnyomásakor. Ha felülbírálta ezt a függvényt, térjen vissza FALSE , hogy megakadályozza a tulajdonságlap megsemmisülését.

A varázsló tulajdonságlapján a Befejezés gomb megnyomásakor küldött értesítési üzenetekről a Windows SDK-ban talál PSN_WIZFINISH további információt.

A varázsló típusú tulajdonságlap készítésével kapcsolatos további információkért lásd: CPropertySheet::SetWizardMode.

Example

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

Ezt a tagfüggvényt a keretrendszer hívja meg, amikor a felhasználó kiválasztja a Tovább gombot egy varázslóban.

virtual LRESULT OnWizardNext();

Visszaadott érték

0 a következő oldalra való automatikus ugráshoz; -1 a lap módosításának megakadályozásához. Ha nem a következő oldalra szeretne ugorni, adja vissza a megjelenítendő párbeszédpanel azonosítóját.

Megjegyzések

Bírálja felül ezt a tagfüggvényt, és adjon meg néhány műveletet, amelyet a felhasználónak el kell végeznie a Tovább gomb lenyomásakor.

A varázsló típusú tulajdonságlap készítésével kapcsolatos további információkért lásd: CPropertySheet::SetWizardMode.

Example

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

Hívja meg ezt a tagfüggvényt, hogy üzenetet továbbítson a tulajdonságlap minden lapjára.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Paraméterek

wParam
További üzenetfüggő információkat ad meg.

lParam
További üzenetfüggő információkat ad meg

Visszaadott érték

A tulajdonságlap egyik oldalának nemero értéke, vagy 0, ha az összes oldal 0 értéket ad vissza.

Megjegyzések

Ha egy oldal nemero értéket ad vissza, a tulajdonságlap nem küldi el az üzenetet a következő lapokra.

Example

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

Hívja meg ezt a tagfüggvényt az Alkalmaz most gomb engedélyezéséhez vagy letiltásához, attól függően, hogy a tulajdonságlap beállításait a megfelelő külső objektumra kell-e alkalmazni.

void SetModified(BOOL bChanged = TRUE);

Paraméterek

bChanged
TRUE annak jelzésére, hogy a tulajdonságlap beállításai az utolsó alkalmazásuk óta módosultak; FALSE annak jelzésére, hogy a tulajdonságlap beállításait alkalmazták, vagy figyelmen kívül kell hagyni.

Megjegyzések

A keretrendszer nyomon követi, hogy mely lapok "piszkosak", vagyis azokat a tulajdonságlapokat, amelyekhez ön hívott SetModified( TRUE ). Az Alkalmazás most gomb mindig engedélyezve lesz, ha az egyik oldalt kéri SetModified( TRUE ) . Az Alkalmazás most gomb le lesz tiltva az egyik oldal meghívásakor SetModified( FALSE ) , de csak akkor, ha a többi lap egyike sem "piszkos".

Example

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

Lásd még

MFC-minta CMNCTRL1
MFC-minta CMNCTRL2
MFC-minta PROPDLG
MFC-minta SNAPVW
CDialog osztály
hierarchiadiagram
CPropertySheet osztály