Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
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
DoModalvagyCreatefü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
DoModalvagyCreatefü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