Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Vertegenwoordigt eigenschappenvensters, ook wel tabbladdialoogvensters genoemd.
Syntaxis
class CPropertySheet : public CWnd
Leden
Openbare constructors
| Naam | Description |
|---|---|
CPropertySheet::CPropertySheet |
Maakt een CPropertySheet object. |
Openbare methoden
| Naam | Description |
|---|---|
CPropertySheet::AddPage |
Hiermee voegt u een pagina toe aan het eigenschappenvenster. |
CPropertySheet::Construct |
Maakt een CPropertySheet object. |
CPropertySheet::Create |
Geeft een modusloos eigenschappenvenster weer. |
CPropertySheet::DoModal |
Geeft een modaal eigenschappenvenster weer. |
CPropertySheet::EnableStackedTabs |
Geeft aan of het eigenschappenvenster gestapelde of schuiftabbladen gebruikt. |
CPropertySheet::EndDialog |
Hiermee wordt het eigenschappenvenster beëindigd. |
CPropertySheet::GetActiveIndex |
Haalt de index van de actieve pagina van het eigenschappenvenster op. |
CPropertySheet::GetActivePage |
Retourneert het actieve paginaobject. |
CPropertySheet::GetPage |
Hiermee wordt een aanwijzer naar de opgegeven pagina opgehaald. |
CPropertySheet::GetPageCount |
Hiermee wordt het aantal pagina's in het eigenschappenvenster opgehaald. |
CPropertySheet::GetPageIndex |
Haalt de index van de opgegeven pagina van het eigenschappenvenster op. |
CPropertySheet::GetTabControl |
Hiermee haalt u een aanwijzer naar een tab-besturingselement. |
CPropertySheet::MapDialogRect |
Converteert de dialoogvenstereenheden van een rechthoek naar schermeenheden. |
CPropertySheet::OnInitDialog |
Overschrijven om initialisatie van eigenschappenvensters te verbeteren. |
CPropertySheet::PressButton |
Simuleert de keuze van de opgegeven knop in een eigenschappenvenster. |
CPropertySheet::RemovePage |
Hiermee verwijdert u een pagina uit het eigenschappenvenster. |
CPropertySheet::SetActivePage |
Hiermee stelt u het actieve paginaobject programmatisch in. |
CPropertySheet::SetFinishText |
Hiermee stelt u de tekst voor de knop Voltooien in. |
CPropertySheet::SetTitle |
Hiermee stelt u het bijschrift van het eigenschappenvenster in. |
CPropertySheet::SetWizardButtons |
Hiermee schakelt u de wizardknoppen in. |
CPropertySheet::SetWizardMode |
Hiermee schakelt u de wizardmodus in. |
Leden van openbare gegevens
| Naam | Description |
|---|---|
CPropertySheet::m_psh |
De Windows-structuur PROPSHEETHEADER . Biedt toegang tot basisparameters voor eigenschappenvensters. |
Opmerkingen
Een eigenschappenvenster bestaat uit een CPropertySheet object en een of meer CPropertyPage objecten. In het framework wordt een eigenschappenvenster weergegeven als een venster met een set tabindexen en een gebied dat de geselecteerde pagina bevat. De gebruiker navigeert naar een specifieke pagina met behulp van het desbetreffende tabblad.
CPropertySheet biedt ondersteuning voor de uitgebreide PROPSHEETHEADER structuur die is geïntroduceerd in Windows 98 en Windows NT 2000. De structuur bevat extra vlaggen en leden die ondersteuning bieden voor het gebruik van een achtergrond bitmap voor watermerk.
Als u deze nieuwe afbeeldingen automatisch wilt weergeven in het eigenschappenvensterobject, geeft u geldige waarden door voor de bitmap- en paletafbeeldingen in de aanroep naar CPropertySheet::Construct of CPropertySheet::CPropertySheet.
CPropertySheet Hoewel het niet is afgeleid vanCDialog, is het beheren van een CPropertySheet object net als het beheren van een CDialog object. Voor het maken van een eigenschappenvenster is bijvoorbeeld tweedelige constructie vereist: roep de constructor aan en roep DoModal vervolgens een modaal eigenschappenvenster aan of Create voor een modusloos eigenschappenvenster.
CPropertySheet heeft twee soorten constructors: CPropertySheet::Construct en CPropertySheet::CPropertySheet.
Wanneer u een CPropertySheet object maakt, kunnen sommige vensterstijlen ertoe leiden dat er een uitzondering voor de eerste kans optreedt. Dit is het resultaat van het systeem dat de stijl van het eigenschappenvenster probeert te wijzigen voordat het blad wordt gemaakt. Om deze uitzondering te voorkomen, moet u de volgende stijlen instellen wanneer u het CPropertySheetvolgende maakt:
DS_3DLOOKDS_CONTROLWS_CHILDWS_TABSTOP
De volgende stijlen zijn optioneel en veroorzaken geen uitzondering voor de eerste kans:
DS_SHELLFONTDS_LOCALEDITWS_CLIPCHILDREN
Alle andere Window Styles zijn verboden en u mag ze niet inschakelen.
Het uitwisselen van gegevens tussen een CPropertySheet object en een extern object is vergelijkbaar met het uitwisselen van gegevens met een CDialog object. Het belangrijkste verschil is dat de instellingen van een eigenschappenvenster doorgaans lidvariabelen van de CPropertyPage objecten zijn in plaats van het CPropertySheet object zelf.
U kunt een type tabbladdialoogvenster maken dat een wizard wordt genoemd, die bestaat uit een eigenschappenvenster met een reeks eigenschappenpagina's waarmee de gebruiker de stappen van een bewerking doorloopt, zoals het instellen van een apparaat of het maken van een nieuwsbrief. In een dialoogvenster van het wizardtypetabblad hebben de eigenschappenpagina's geen tabbladen en is er slechts één eigenschappenpagina tegelijk zichtbaar. In plaats van knoppen OK en Nu toepassen te hebben, heeft een wizardtabvenster een knop Vorige , een knop Volgende of Voltooien , een knop Annuleren en een Help-knop .
Als u een dialoogvenster van het wizardtype wilt maken, volgt u dezelfde stappen die u zou volgen om een standaardeigenschappenvenster te maken, maar roept SetWizardMode u aan voordat u aanroept DoModal. Als u de knoppen van de wizard wilt inschakelen, roept u het aan SetWizardButtonsmet behulp van vlaggen om hun functie en uiterlijk aan te passen. Als u de knop Voltooien wilt inschakelen, roept SetFinishText u aan nadat de gebruiker actie heeft ondernomen op de laatste pagina van de wizard.
Zie het artikel Eigenschappenvensters en Eigenschappenpagina's voor meer informatie over het gebruik CPropertySheet van objecten.
Overnamehiërarchie
CPropertySheet
Requirements
Rubriek:afxdlgs.h
CPropertySheet::AddPage
Hiermee voegt u de opgegeven pagina toe met het meest rechtse tabblad in het eigenschappenvenster.
void AddPage(CPropertyPage* pPage);
Parameterwaarden
pPage
Verwijst naar de pagina die moet worden toegevoegd aan het eigenschappenvenster. Kan niet zijn NULL.
Opmerkingen
Voeg pagina's toe aan het eigenschappenvenster in de volgorde van links naar rechts die u wilt weergeven.
AddPage voegt het CPropertyPage object toe aan de lijst met pagina's van het CPropertySheet object, maar maakt het venster voor de pagina niet daadwerkelijk. Het framework stelt het maken van het venster voor de pagina uit totdat de gebruiker die pagina selecteert.
Wanneer u een eigenschappenpagina toevoegt met behulp AddPagevan , is dit het CPropertySheet bovenliggende element van de CPropertyPage. Als u toegang wilt krijgen tot het eigenschappenvenster vanaf de eigenschappenpagina, roept u het aan CWnd::GetParent.
Het is niet nodig om te wachten totdat het venster van het eigenschappenvenster is gemaakt om aan te roepen AddPage. Normaal gesproken belt AddPage u voordat u belt DoModal of Create.
Als u belt AddPage nadat u de eigenschappenpagina hebt weergegeven, geeft de tabrij de zojuist toegevoegde pagina weer.
Example
// Add three pages to a CPropertySheet object, then show the
// CPropertySheet object as a modal dialog. CStylePage, CShapePage,
// and CColorPage are CPropertyPage-derived classes created
// by the Add Class wizard.
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
dlgPropertySheet.DoModal();
CPropertySheet::Construct
Maakt een CPropertySheet object.
void Construct(
UINT nIDCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(
LPCTSTR pszCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(
UINT nIDCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
void Construct(
LPCTSTR pszCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
Parameterwaarden
nIDCaption
Id van het bijschrift dat moet worden gebruikt voor het eigenschappenvenster.
pParentWnd
Aanwijzer naar het bovenliggende venster van het eigenschappenvenster. Als NULLhet bovenliggende venster het hoofdvenster van de toepassing is.
iSelectPage
De index van de pagina die zich in eerste instantie bovenaan zal bevinden. De standaardwaarde is de eerste pagina die aan het blad is toegevoegd.
pszCaption
Wijs een tekenreeks aan met het bijschrift dat moet worden gebruikt voor het eigenschappenvenster. Kan niet zijn NULL.
hbmWatermark
Greep naar de watermerk bitmap van de eigenschappenpagina.
hpalWatermark
Greep naar het palet van de watermerk bitmap en/of koptekst bitmap.
hbmHeader
Greep naar de koptekst bitmap van de eigenschappenpagina.
Opmerkingen
Roep deze lidfunctie aan als een van de klasseconstructors nog niet is aangeroepen. U kunt bijvoorbeeld aanroepen Construct wanneer u matrices van CPropertySheet objecten declareert of toewijst. In het geval van matrices moet u elk lid in de matrix aanroepen Construct .
Als u het eigenschappenvenster wilt weergeven, roept DoModal u aan of Create. De tekenreeks in de eerste parameter wordt in de bijschriftbalk voor het eigenschappenvenster geplaatst.
U kunt afbeeldingen van watermerken en/of kopteksten automatisch weergeven als u de derde of vierde prototypen van Construct, hierboven vermeld, gebruikt en u geldige waarden doorgeeft voor de hbmWatermark, hpalWatermarken/of hbmHeader parameters.
Example
In het volgende voorbeeld ziet u onder welke omstandigheden u zou aanroepen Construct.
const int c_cSheets = 3;
CPropertySheet grpropsheet[c_cSheets];
// no need to call Construct for this next one
CPropertySheet someSheet(_T("Some sheet"));
LPTSTR rgszSheets[c_cSheets] = {
_T("Sheet 1"),
_T("Sheet 2"),
_T("Sheet 3")
};
for (int i = 0; i < c_cSheets; i++)
grpropsheet[i].Construct(rgszSheets[i]);
CPropertySheet::CPropertySheet
Maakt een CPropertySheet object.
CPropertySheet();
explicit CPropertySheet(
UINT nIDCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
explicit CPropertySheet(
LPCTSTR pszCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
CPropertySheet(
UINT nIDCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
CPropertySheet(
LPCTSTR pszCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
Parameterwaarden
nIDCaption
Id van het bijschrift dat moet worden gebruikt voor het eigenschappenvenster.
pParentWnd
Verwijst naar het bovenliggende venster van het eigenschappenvenster. Als NULLhet bovenliggende venster het hoofdvenster van de toepassing is.
iSelectPage
De index van de pagina die zich in eerste instantie bovenaan zal bevinden. De standaardwaarde is de eerste pagina die aan het blad is toegevoegd.
pszCaption
Verwijst naar een tekenreeks met het bijschrift dat moet worden gebruikt voor het eigenschappenvenster. Kan niet zijn NULL.
hbmWatermark
Een greep naar de achtergrond bitmap van het eigenschappenvenster.
hpalWatermark
Een greep naar het palet van de watermerk bitmap en/of koptekst bitmap.
hbmHeader
Een ingang naar de koptekst bitmap van de eigenschappenpagina.
Opmerkingen
Als u het eigenschappenvenster wilt weergeven, roept DoModal u aan of Create. De tekenreeks in de eerste parameter wordt in de bijschriftbalk voor het eigenschappenvenster geplaatst.
Als u meerdere parameters hebt (bijvoorbeeld als u een matrix gebruikt), gebruikt Construct u in plaats van CPropertySheet.
U kunt watermerk- en/of koptekstafbeeldingen automatisch weergeven als u de derde of vierde prototype van CPropertySheet, hierboven gebruikt en u geldige waarden doorgeeft voor de hbmWatermark, hpalWatermarken/of hbmHeader parameters.
Example
// Declare a CPropertySheet object titled "Simple PropertySheet".
CPropertySheet dlgPropertySheet1(_T("Simple PropertySheet"));
// Declare a CPropertySheet object whose title is specified in the
// IDS_PROPERTYSHEET_TITLE string resource, and the second page is
// initially on top.
CPropertySheet dlgPropertySheet2(IDS_PROPERTYSHEET_TITLE, this, 1);
CPropertySheet::Create
Geeft een modusloos eigenschappenvenster weer.
virtual BOOL Create(CWnd* pParentWnd = NULL,
DWORD dwStyle = (DWORD)-1,
DWORD dwExStyle = 0);
Parameterwaarden
pParentWnd
Verwijst naar het bovenliggende venster. Als NULLhet bovenliggende element het bureaublad is.
dwStyle
Vensterstijlen voor eigenschappenvenster. Zie Vensterstijlen voor een volledige lijst met beschikbare stijlen.
dwExStyle
Uitgebreide vensterstijlen voor eigenschappenvensters. Zie Uitgebreide vensterstijlen voor een volledige lijst met beschikbare stijlen
Retourwaarde
Niet-nul als het eigenschappenvenster is gemaakt; anders 0.
Opmerkingen
De aanroep die moet Create worden aangeroepen, kan zich in de constructor of u kunt deze aanroepen nadat de constructor is aangeroepen.
De standaardstijl, uitgedrukt door -1 door te geven als dwStyle, is eigenlijk WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE. De standaardstijl voor uitgebreide vensters, uitgedrukt door 0 door te geven als dwExStyle, is eigenlijk WS_EX_DLGMODALFRAME.
De Create lidfunctie wordt direct na het maken van het eigenschappenvenster geretourneerd. Als u het eigenschappenvenster wilt vernietigen, roept u aan CWnd::DestroyWindow.
Modusloze eigenschappenbladen die worden weergegeven met een aanroep om Create geen OK-, Annuleren-, Nu toepassen- en Help-knoppen te hebben als modale eigenschappenvensters. Gewenste knoppen moeten door de gebruiker worden gemaakt.
Als u een modaal eigenschappenvenster wilt weergeven, roept DoModal u in plaats daarvan aan.
Example
// This code fragment shows how to create a modeless property sheet
// dialog in a command message handler (OnModelessPropertySheet())
// of a CView-derived class.
void CPSheetView::OnModelessPropertySheet()
{
// Declare a CPropertySheet object. m_pdlgPropertySheet is a data
// member of type CPropertySheet in CView-derived class.
m_pdlgPropertySheet = new CPropertySheet(_T("Simple PropertySheet"));
ASSERT(m_pdlgPropertySheet);
// Add three pages to the CPropertySheet object. Both m_pstylePage,
// m_pcolorPage, and m_pshapePage are data members of type
// CPropertyPage-derived classes in CView-derived class.
m_pstylePage = new CStylePage;
m_pcolorPage = new CColorPage;
m_pshapePage = new CShapePage;
m_pdlgPropertySheet->AddPage(m_pstylePage);
m_pdlgPropertySheet->AddPage(m_pcolorPage);
m_pdlgPropertySheet->AddPage(m_pshapePage);
// Create a modeless CPropertySheet dialog.
m_pdlgPropertySheet->Create();
}
// The code fragment below shows how to destroy the C++ objects for
// propertysheet and propertypage in the destructor of CView-derived
// class.
// NOTE: DestroyWindow() is called in CPropertySheet::OnClose() so
// you do not need to call it here. Property pages are children
// of the CPropertySheet, they will be destroyed by their parents.
CPSheetView::~CPSheetView()
{
delete m_pshapePage;
delete m_pstylePage;
delete m_pcolorPage;
delete m_pdlgPropertySheet;
}
CPropertySheet::DoModal
Geeft een modaal eigenschappenvenster weer.
virtual INT_PTR DoModal();
Retourwaarde
IDOK of IDCANCEL als de functie is geslaagd; anders 0 of -1. Als het eigenschappenvenster is ingesteld als een wizard (zie SetWizardMode), DoModal retourneert ID_WIZFINISH of IDCANCEL.
Opmerkingen
De retourwaarde komt overeen met de id van het besturingselement dat het eigenschappenvenster heeft gesloten. Nadat deze functie is geretourneerd, zijn de vensters die overeenkomen met het eigenschappenvenster en alle pagina's vernietigd. De objecten zelf bestaan nog steeds. Normaal gesproken haalt u gegevens op uit de CPropertyPage objecten nadat DoModal IDOK is geretourneerd.
Als u een modusloos eigenschappenvenster wilt weergeven, roept Create u in plaats daarvan aan.
Wanneer een eigenschapspagina wordt gemaakt op basis van de bijbehorende dialoogvensterresource, kan deze een uitzondering voor de eerste kans veroorzaken. Dit is het resultaat van de eigenschappenpagina die de stijl van de dialoogvensterresource wijzigt in de vereiste stijl voordat de pagina wordt gemaakt. Omdat resources over het algemeen alleen-lezen zijn, veroorzaakt dit een uitzondering. Het systeem verwerkt de uitzondering en maakt een kopie van de gewijzigde resource. De uitzondering voor de eerste kans kan daarom worden genegeerd.
Opmerking
Deze uitzondering moet worden verwerkt door het besturingssysteem als u met het asynchrone uitzonderingsverwerkingsmodel compileert. Zie (Uitzonderingsafhandelingsmodel) voor/EH meer informatie over modellen voor het verwerken van uitzonderingen. In dit geval worden aanroepen niet verpakt CPropertySheet::DoModal met een C++-try-catchblok waarin de catch alle uitzonderingen afhandelt, bijvoorbeeld catch (...). Dit blok verwerkt de uitzondering die is bedoeld voor het besturingssysteem en veroorzaakt onvoorspelbaar gedrag. U kunt echter veilig C++-uitzonderingsafhandeling gebruiken met specifieke uitzonderingstypen of gestructureerde uitzonderingsafhandeling waarbij de uitzondering toegangsschending wordt doorgegeven aan het besturingssysteem.
Om te voorkomen dat deze uitzondering voor de eerste kans wordt gegenereerd, kunt u handmatig garanderen dat het eigenschappenvenster de juiste vensterstijlen heeft. U moet de volgende stijlen instellen voor een eigenschappenvenster:
DS_3DLOOKDS_CONTROLWS_CHILDWS_TABSTOP
U kunt de volgende optionele stijlen gebruiken zonder een uitzondering voor de eerste kans te veroorzaken:
DS_SHELLFONTDS_LOCALEDITWS_CLIPCHILDREN
Schakel alle andere Windows-stijlen uit omdat ze niet compatibel zijn met eigenschappenvensters. Dit advies is niet van toepassing op uitgebreide stijlen. Als u deze standaardstijlen op de juiste manier instelt, wordt gegarandeerd dat het eigenschappenvenster niet hoeft te worden gewijzigd en wordt voorkomen dat de uitzondering voor de eerste kans wordt gegenereerd.
Example
Zie het voorbeeld voor CPropertySheet::AddPage.
CPropertySheet::EnableStackedTabs
Hiermee wordt aangegeven of rijen met tabbladen in een eigenschappenvenster moeten worden gestapeld.
void EnableStackedTabs(BOOL bStacked);
Parameterwaarden
bStacked
Geeft aan of gestapelde tabbladen zijn ingeschakeld in het eigenschappenvenster. Schakel gestapelde rijen met tags uit door deze in te stellen bStacked op FALSE.
Opmerkingen
Als een eigenschappenvenster standaard meer tabbladen heeft dan in één rij in de breedte van het eigenschappenvenster past, worden de tabbladen in meerdere rijen gestapeld. Als u schuiftabbladen wilt gebruiken in plaats van tabbladen te stapelen, belt EnableStackedTabs u met bStacked ingesteld op FALSE voordat u belt DoModal of Create.
U moet aanroepen EnableStackedTabs wanneer u een modaal of een modusloos eigenschappenvenster maakt. Als u deze stijl wilt opnemen in een CPropertySheet-afgeleide klasse, schrijft u een berichthandler voor WM_CREATE. Roep in de overschreven versie van CWnd::OnCreate, aan EnableStackedTabs( FALSE ) voordat u de implementatie van de basisklasse aanroept.
Example
int CMyPropertySheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// Set for Scrolling Tabs style
EnableStackedTabs(FALSE);
// Call the base class
if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
CPropertySheet::EndDialog
Hiermee wordt het eigenschappenvenster beëindigd.
void EndDialog(int nEndID);
Parameterwaarden
nEndID
De id die moet worden gebruikt als retourwaarde van het eigenschappenvenster.
Opmerkingen
Deze lidfunctie wordt aangeroepen door het framework wanneer de knop OK, Annuleren of Sluiten wordt ingedrukt. Roep deze lidfunctie aan als er een gebeurtenis optreedt die het eigenschappenvenster moet sluiten.
Deze lidfunctie wordt alleen gebruikt met een modaal dialoogvenster.
Example
Zie het voorbeeld voor CPropertySheet::PressButton.
CPropertySheet::GetActiveIndex
Hiermee haalt u het indexnummer van de actieve pagina van het eigenschappenvenster op en gebruikt u vervolgens het geretourneerde indexnummer als parameter voor GetPage.
int GetActiveIndex() const;
Retourwaarde
Het indexnummer van de actieve pagina.
Example
Zie het voorbeeld voor CPropertySheet::GetActivePage.
CPropertySheet::GetActivePage
Hiermee wordt de actieve pagina van het eigenschappenvenster opgehaald.
CPropertyPage* GetActivePage() const;
Retourwaarde
De aanwijzer naar de actieve pagina.
Opmerkingen
Gebruik deze lidfunctie om een actie uit te voeren op de actieve pagina.
Example
// The code fragment below sets the last active page (i.e. the
// active page when the propertysheet was closed) to be the first
// visible page when the propertysheet is shown. The last active
// page was saved in m_LastActivePage, (a member variable of
// CDocument-derived class) when OK was selected from the
// propertysheet. CMyPropertySheet is a CPropertySheet-derived class.
BOOL CMyPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
SetActivePage(doc->m_LastActivePage);
return bResult;
}
BOOL CMyPropertySheet::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (LOWORD(wParam) == IDOK)
{
CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
doc->m_LastActivePage = GetPageIndex(GetActivePage()); // or GetActiveIndex()
}
return CPropertySheet::OnCommand(wParam, lParam);
}
CPropertySheet::GetPage
Retourneert een aanwijzer naar de opgegeven pagina in dit eigenschappenvenster.
CPropertyPage* GetPage(int nPage) const;
Parameterwaarden
nPage
Index van de gewenste pagina, beginnend bij 0. Moet tussen 0 en één kleiner zijn dan het aantal pagina's in het eigenschappenvenster, inclusief.
Retourwaarde
De aanwijzer naar de pagina die overeenkomt met de nPage parameter.
Example
Zie het voorbeeld voor CPropertyPage::OnWizardFinish.
CPropertySheet::GetPageCount
Bepaalt het aantal pagina's dat zich momenteel in het eigenschappenvenster bevindt.
int GetPageCount() const;
Retourwaarde
Het aantal pagina's in het eigenschappenvenster.
Example
Zie het voorbeeld voor CPropertyPage::OnWizardFinish.
CPropertySheet::GetPageIndex
Hiermee wordt het indexnummer van de opgegeven pagina in het eigenschappenvenster opgehaald.
int GetPageIndex(CPropertyPage* pPage);
Parameterwaarden
pPage
Verwijst naar de pagina met de index die moet worden gevonden. Kan niet zijn NULL.
Retourwaarde
Het indexnummer van een pagina.
Opmerkingen
U gebruikt GetPageIndex bijvoorbeeld om de pagina-index op te halen om deze te gebruiken SetActivePage of GetPage.
Example
Zie het voorbeeld voor CPropertySheet::GetActivePage.
CPropertySheet::GetTabControl
Hiermee haalt u een aanwijzer naar een tab-besturingselement op om iets specifieks te doen voor het tab-besturingselement (dat wil gezegd, om een van de API's in CTabCtrlte gebruiken).
CTabCtrl* GetTabControl() const;
Retourwaarde
Een aanwijzer naar een tabblad besturingselement.
Opmerkingen
Roep deze lidfunctie bijvoorbeeld aan als u bitmaps wilt toevoegen aan elk van de tabbladen tijdens de initialisatie.
Example
// Create and associate a tooltip control to the tab control of
// CMyTTPropertySheet. CMyTTPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyTTPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
// Create a tooltip control. m_pToolTipCtrl is a member variable
// of type CToolTipCtrl* in CMyTTPropertySheet class. It is
// initialized to NULL in the constructor, and destroyed in the
// destructor of CMyTTPropertySheet class.
m_pToolTipCtrl = new CToolTipCtrl;
if (!m_pToolTipCtrl->Create(this))
{
TRACE(_T("Unable To create ToolTip\n"));
return bResult;
}
// Associate the tooltip control to the tab control
// of CMyPropertySheet.
CTabCtrl* ptab = GetTabControl();
ptab->SetToolTips(m_pToolTipCtrl);
// Get the bounding rectangle of each tab in the tab control of the
// property sheet. Use this rectangle when registering a tool with
// the tool tip control. IDS_FIRST_TOOLTIP is the first ID string
// resource that contains the text for the tool.
int count = ptab->GetItemCount();
int id = IDS_FIRST_TOOLTIP;
for (int i = 0; i < count; i++)
{
CRect r;
ptab->GetItemRect(i, &r);
VERIFY(m_pToolTipCtrl->AddTool(ptab, id, &r, id));
id++;
}
// Activate the tooltip control.
m_pToolTipCtrl->Activate(TRUE);
return bResult;
}
// Override PreTranslateMessage() so RelayEvent() can be
// called to pass a mouse message to CMyTTPropertySheet's
// tooltip control for processing.
BOOL CMyTTPropertySheet::PreTranslateMessage(MSG* pMsg)
{
if (NULL != m_pToolTipCtrl)
m_pToolTipCtrl->RelayEvent(pMsg);
return CPropertySheet::PreTranslateMessage(pMsg);
}
CPropertySheet::m_psh
Een structuur waarvan de leden de kenmerken van PROPSHEETHEADER.
Opmerkingen
Gebruik deze structuur om het uiterlijk van het eigenschappenvenster te initialiseren nadat het is samengesteld, maar voordat deze wordt weergegeven met de DoModal lidfunctie. Stel bijvoorbeeld het dwSize lid in op m_psh de grootte die het eigenschappenvenster moet hebben.
Zie de Windows SDK voor meer informatie over deze structuur, inclusief een lijst met leden PROPSHEETHEADER .
Example
// This code fragment shows how to change CPropertySheet's settings
// before it is shown. After the changes, CPropertySheet has the
// caption "Simple Properties", no "Apply" button, and the
// second page (CColorPage) initially on top.
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
dlgPropertySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW | PSH_PROPTITLE;
dlgPropertySheet.m_psh.pszCaption = _T("Simple");
dlgPropertySheet.m_psh.nStartPage = 1;
dlgPropertySheet.DoModal();
CPropertySheet::MapDialogRect
Converteert de dialoogvenstereenheden van een rechthoek naar schermeenheden.
void MapDialogRect(LPRECT lpRect) const;
Parameterwaarden
lpRect
Verwijst naar een RECT structuur of CRect object dat de coördinaten van het dialoogvenster bevat die moeten worden geconverteerd.
Opmerkingen
Dialoogvenstereenheden worden vermeld in termen van de huidige basiseenheid van het dialoogvenster die is afgeleid van de gemiddelde breedte en hoogte van tekens in het lettertype dat wordt gebruikt voor dialoogvenstertekst. Eén horizontale eenheid is een vierde van de eenheid met basisbreedte van het dialoogvenster en één verticale eenheid is één achtste van de basishoogteeenheid van het dialoogvenster.
De GetDialogBaseUnits Windows-functie retourneert groottegegevens voor het systeemlettertype, maar u kunt voor elk eigenschappenvenster een ander lettertype opgeven als u de stijl DS_SETFONT in het resourcedefinitiebestand gebruikt. De MapDialogRect Windows-functie, zoals beschreven in de Windows SDK, gebruikt het juiste lettertype voor dit dialoogvenster.
De MapDialogRect lidfunctie vervangt de dialoogvenstereenheden lpRect door schermeenheden (pixels), zodat de rechthoek kan worden gebruikt om een dialoogvenster te maken of een besturingselement in een vak te plaatsen.
CPropertySheet::OnInitDialog
Onderdrukkingen voor het uitbreiden van initialisatie van eigenschappenvensters.
virtual BOOL OnInitDialog();
Retourwaarde
Hiermee geeft u op of de toepassing de invoerfocus heeft ingesteld op een van de besturingselementen in het eigenschappenvenster. Als OnInitDialog niet-nul wordt geretourneerd, stelt Windows de invoerfocus in op het eerste besturingselement in het eigenschappenvenster. De toepassing kan alleen 0 retourneren als de invoerfocus expliciet is ingesteld op een van de besturingselementen in het eigenschappenvenster.
Opmerkingen
Deze lidfunctie wordt aangeroepen als reactie op het WM_INITDIALOG bericht. Dit bericht wordt tijdens het Create of DoModal aanroepen naar het eigenschappenvenster verzonden. Dit gebeurt direct voordat het eigenschappenvenster wordt weergegeven.
Overschrijf deze lidfunctie als u speciale verwerking moet uitvoeren wanneer het eigenschappenvenster wordt geïnitialiseerd. Roep in de overschreven versie eerst de basisklasse OnInitDialog aan, maar negeer de retourwaarde. Normaal gesproken retourneert TRUE u de functie overschreven leden.
U hebt geen berichtkaartvermelding nodig voor deze lidfunctie.
CPropertySheet::PressButton
Simuleert de keuze van de opgegeven knop in een eigenschappenvenster.
void PressButton(int nButton);
Parameterwaarden
nButton
nButton : Identificeert de knop die moet worden ingedrukt. Deze parameter kan een van de volgende waarden zijn:
PSBTN_BACKHiermee kiest u de knop Vorige.PSBTN_NEXTHiermee kiest u de knop Volgende.PSBTN_FINISHHiermee kiest u de knop Voltooien.PSBTN_OKHiermee kiest u de knop OK.PSBTN_APPLYNOWHiermee kiest u de knop Nu toepassen.PSBTN_CANCELHiermee kiest u de knop Annuleren.PSBTN_HELPHiermee kiest u de knop Help.
Opmerkingen
Zie PSM_PRESSBUTTON voor meer informatie over het Windows SDK Pressbutton-bericht.
Een aanroep om PressButton de PSN_APPLY melding van een eigenschappenpagina niet naar het framework te verzenden. Als u deze melding wilt verzenden, belt u CPropertyPage::OnOK.
Example
// Simulate the selection of OK and Cancel buttons when Alt+K and
// Alt+C are pressed. CMyPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyPropertySheet::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
{
BOOL altkey = GetKeyState(VK_MENU) < 0;
if (altkey)
{
BOOL handled = TRUE;
switch (toupper((int)pMsg->wParam))
{
case 'C': // for Alt+C - Cancel button
PressButton(PSBTN_CANCEL); // or EndDialog(IDCANCEL);
break;
case 'K': // for Alt+K - OK button
PressButton(PSBTN_OK); // or EndDialog(IDOK);
break;
default:
handled = FALSE;
}
if (handled)
return TRUE;
}
}
return CPropertySheet::PreTranslateMessage(pMsg);
}
CPropertySheet::RemovePage
Hiermee verwijdert u een pagina uit het eigenschappenvenster en vernietigt u het bijbehorende venster.
void RemovePage(CPropertyPage* pPage);
void RemovePage(int nPage);
Parameterwaarden
pPage
Verwijst naar de pagina die uit het eigenschappenvenster moet worden verwijderd. Kan niet zijn NULL.
nPage
Index van de pagina die moet worden verwijderd. Moet tussen 0 en één kleiner zijn dan het aantal pagina's in het eigenschappenvenster, inclusief.
Opmerkingen
Het CPropertyPage object zelf wordt pas vernietigd als de eigenaar van het CPropertySheet raam is gesloten.
CPropertySheet::SetActivePage
Hiermee wijzigt u de actieve pagina.
BOOL SetActivePage(int nPage);
BOOL SetActivePage(CPropertyPage* pPage);
Parameterwaarden
nPage
Index van de pagina die moet worden ingesteld. Het moet tussen 0 en één kleiner zijn dan het aantal pagina's in het eigenschappenvenster, inclusief.
pPage
Verwijst naar de pagina die u wilt instellen in het eigenschappenvenster. Het kan niet zijn NULL.
Retourwaarde
Niet-nul als het eigenschappenvenster is geactiveerd; anders 0.
Opmerkingen
Gebruik bijvoorbeeld SetActivePage als de actie van een gebruiker op de ene pagina ervoor moet zorgen dat een andere pagina de actieve pagina wordt.
Example
Zie het voorbeeld voor CPropertySheet::GetActivePage.
CPropertySheet::SetFinishText
Hiermee stelt u de tekst in op de opdrachtknop Voltooien.
void SetFinishText(LPCTSTR lpszText);
Parameterwaarden
lpszText
Verwijst naar de tekst die moet worden weergegeven op de knop Opdracht Voltooien.
Opmerkingen
Roep SetFinishText aan om de tekst weer te geven op de opdrachtknop Voltooien en verberg de knoppen Volgende en Vorige nadat de gebruiker de actie heeft voltooid op de laatste pagina van de wizard.
Example
// CShapePage is the last wizard property page. Enable the Back
// button and change the Next button to Finish. The "Finish" button
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
psheet->SetFinishText(_T("Done"));
return CPropertyPage::OnSetActive();
}
CPropertySheet::SetTitle
Hiermee geeft u het bijschrift van het eigenschappenvenster op (de tekst die wordt weergegeven in de titelbalk van een framevenster).
void SetTitle(
LPCTSTR lpszText,
UINT nStyle = 0);
Parameterwaarden
nStyle
Hiermee geeft u de stijl van de titel van het eigenschappenvenster op. De stijl moet worden opgegeven op 0 of als PSH_PROPTITLE. Als de stijl is ingesteld als PSH_PROPTITLE, wordt het woord 'Eigenschappen' weergegeven na de tekst die is opgegeven als het bijschrift. Als u bijvoorbeeld 'Eenvoudig' aanroept SetTitle, PSH_PROPTITLEresulteert dit in een bijschrift van het eigenschappenvenster 'Eenvoudige eigenschappen'.
lpszText
Verwijst naar de tekst die moet worden gebruikt als het bijschrift op de titelbalk van het eigenschappenvenster.
Opmerkingen
Standaard gebruikt een eigenschappenvenster de bijschriftparameter in de eigenschappenvensterconstructor.
Example
// Declare a CPropertySheet object with a caption "Simple PropertySheet".
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
// Add three pages to the CPropertySheet object. CStylePage, CColorPage,
// and CShapePage are CPropertyPage-derived classes created
// by the Add Class wizard.
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
// Change the caption of the CPropertySheet object
// from "Simple PropertySheet" to "Simple Properties".
dlgPropertySheet.SetTitle(_T("Simple"), PSH_PROPTITLE);
// Show the CPropertySheet object as MODAL.
dlgPropertySheet.DoModal();
CPropertySheet::SetWizardButtons
Hiermee schakelt u de knop Vorige, Volgende of Voltooien in of uit in een eigenschappenvenster van een wizard.
void SetWizardButtons(DWORD dwFlags);
Parameterwaarden
dwFlags
Een set vlaggen waarmee de functie en het uiterlijk van de wizardknoppen worden aangepast. Deze parameter kan een combinatie van de volgende waarden zijn:
PSWIZB_BACKKnop VorigePSWIZB_NEXTKnop VolgendePSWIZB_FINISHKnop VoltooienPSWIZB_DISABLEDFINISHKnop Voltooien uitgeschakeld
Opmerkingen
Alleen SetWizardButtons bellen nadat het dialoogvenster is geopend; u kunt niet bellen SetWizardButtons voordat u belt DoModal. Normaal gesproken moet u bellen SetWizardButtons van CPropertyPage::OnSetActive.
Als u de tekst op de knop Voltooien wilt wijzigen of de knoppen Volgende en Vorige wilt verbergen nadat de gebruiker de wizard heeft voltooid, roept u het aan SetFinishText. Houd er rekening mee dat dezelfde knop wordt gedeeld voor Voltooien en Volgende. U kunt een knop Voltooien of Volgende tegelijk weergeven, maar niet beide.
Example
A CPropertySheet heeft drie eigenschappenpagina's van de wizard: CStylePage, CColorPageen CShapePage. In het onderstaande codefragment ziet u hoe u de knoppen Vorige en Volgende op de eigenschappenpagina van de wizard inschakelt en uitschakelt.
// CStylePage is the first wizard property page. Disable the Back
// button but enable the Next button.
BOOL CStylePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*) GetParent();
psheet->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
// CColorPage is the second wizard property page. Enable both the
// Back button and the Next button.
BOOL CColorPage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
// CShapePage is the last wizard property page. Enable the Back
// button and change the Next button to Finish. The "Finish" button
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
psheet->SetFinishText(_T("Done"));
return CPropertyPage::OnSetActive();
}
CPropertySheet::SetWizardMode
Hiermee wordt een eigenschappenpagina als wizard tot stand brengt.
void SetWizardMode();
Opmerkingen
Een belangrijk kenmerk van een eigenschappenpagina van een wizard is dat de gebruiker navigeert met de knoppen Volgende of Voltooien, Terug en Annuleren in plaats van tabbladen.
Bellen SetWizardMode voor bellen DoModal. Nadat u hebt gebeld SetWizardMode, DoModal keert u terug ID_WIZFINISH (als de gebruiker wordt gesloten met de knop Voltooien) of IDCANCEL.
SetWizardMode stelt de PSH_WIZARD vlag in.
Example
CPropertySheet sheet(_T("Simple PropertySheet"));
CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;
sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);
sheet.SetWizardMode();
sheet.DoModal();
Zie ook
MFC-voorbeeld CMNCTRL1
MFC-voorbeeld CMNCTRL2
MFC-voorbeeld PROPDLG
MFC-voorbeeld SNAPVW
CWnd klasse
Hiërarchiegrafiek